我正在寻找VTable结构,顺序和内容的细节,以及对象内vtable指针的位置.
理想情况下,这将涵盖单继承,多继承和虚继承.
还将赞赏对外部文件的参考
在下面的代码中,pC == pA:
class A
{
};
class B : public A
{
public:
int i;
};
class C : public B
{
public:
char c;
};
int main()
{
C* pC = new C;
A* pA = (A*)pC;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我向B添加一个纯虚函数并在C中实现它时,pA!= pC:
class A
{
};
class B : public A
{
public:
int i;
virtual void Func() = 0;
};
class C : public B
{
public:
char c;
void Func() {}
};
int main()
{
C* …Run Code Online (Sandbox Code Playgroud)