[Mac] Fix the build

[chromium-style] Complex class/struct needs an explicit out-of-line destructor.
[chromium-style] Classes that are ref-counted should have explicit destructors that are declared protected or private.
[chromium-style] Overriding method must have "virtual" keyword.