vtable 存放在内存的什么地方?
最佳答案
取决于编译器。
在 VC++ 中,vtable 指针存储在对象分配的开始,在任何成员数据之前。 (前提是你的类至少有一个虚拟成员函数。)
如果您的类使用 vtables 从其他类乘以继承,也可能有多个 vtable 指针。
vtables 本身静态分配在您的地址空间中的某个位置。
那么对象布局看起来像(对于 C 的一个实例):
A's VTable ptr
A's member variables.
B's Vtable ptr
B's member variables.
C's member variables.
为了类(Class)
class A {
virtual Ax() {}
int a, b;
};
class B {
virtual Bx() {}
int c, d;
};
class C : public A, public B {
int foo, bar;
};
关于c++ - vtable 存储在内存的哪个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905237/