Ale*_*ski 41
取决于编译器.
在VC++中,vtable指针存储在对象分配的开头,在任何成员数据之前.(假设您的班级至少有一个虚拟成员函数.)
如果你的类通过vtable多次继承其他类,那么也可能有多个vtable指针.
vtable本身静态分配在地址空间的某个地方.
然后对象布局看起来像(对于C的实例):
A's VTable ptr
A's member variables.
B's Vtable ptr
B's member variables.
C's member variables.
Run Code Online (Sandbox Code Playgroud)
对于heirarchy
class A {
virtual Ax() {}
int a, b;
};
class B {
virtual Bx() {}
int c, d;
};
class C : public A, public B {
int foo, bar;
};
Run Code Online (Sandbox Code Playgroud)
jal*_*alf 16
虚函数表?什么vtable?C++标准没有提到vtable.每个编译器都可以以任何方式实现虚函数.这包括将vtable放在任何喜欢的地方.
| 归档时间: |
|
| 查看次数: |
16559 次 |
| 最近记录: |