取决于编译器。
在 VC++ 中,vtable 指针存储在对象分配的开始处,位于任何成员数据之前。 (前提是您的类至少有一个虚拟成员函数。)
如果您的类从具有虚函数表的其他类进行多重继承,则还可能有多个虚函数表指针。
vtable 本身静态分配在地址空间中的某个位置。
那么对象布局如下所示(对于 C 的实例):
A's VTable ptr
A's member variables.
B's Vtable ptr
B's member variables.
C's member variables.
对于层次结构
class A {
virtual Ax() {}
int a, b;
};
class B {
virtual Bx() {}
int c, d;
};
class C : public A, public B {
int foo, bar;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)