环境: windows xp 3 VC2008
如果类A拥有虚函数,而类B普通继承自类A,那么一个类B的对象在内存布局里:类B的虚表会将类A虚表合并覆盖,然后先排列类A的数据,再排列类B的数据
如果类B虚拟继承自类A,那么一个类B的对象在内存布局里:类B的虚表和内容都不会将类A的合并,在类B的虚表之后插入一个虚基表,通过这个表来访问类A。
时间: 2024-10-11 20:18:56
环境: windows xp 3 VC2008
如果类A拥有虚函数,而类B普通继承自类A,那么一个类B的对象在内存布局里:类B的虚表会将类A虚表合并覆盖,然后先排列类A的数据,再排列类B的数据
如果类B虚拟继承自类A,那么一个类B的对象在内存布局里:类B的虚表和内容都不会将类A的合并,在类B的虚表之后插入一个虚基表,通过这个表来访问类A。