Earlier quoted context omitted.
I think it's not so much the problem of an ABI but the fact that changing base classes in C++ forces client code to be recompiled because offsets of members and vtable entries change: http://haiku-os.org/legacy-docs/benewsletter/Issue2-25.html Apparently Apple gets around this the usual way by padding out their API classes with extra unused members. I wonder what the solution is in Windows 8 & Symbian.
The problem is not C++ specific. Any OO language with native code generation suffers the same problem. It is one of the consequences of the fragile base class problem in OO.
And it actually has private data members! Isn't that nice.
(Private meaning they aren't declared in the public headers, not meaning it uses the useless 'private' attribute.)