这是一种家庭作业问题。对于以下代码,
#include <iostream>
using namespace std;
class A
{
public:
virtual void f(){}
};
class B
{
public:
virtual void f2(){}
};
class C: public A, public B
{
public:
virtual void f3(){}
};
class D: public C
{
public:
virtual void f4(){}
};
int main()
{
cout<<sizeof(D)<<endl;
}
输出为:8
谁能解释一下它是8个字节吗?如果 vtable 实现依赖于编译器,我应该在面试中回答这种问题?那么虚拟基类呢?
编辑:我正在一个 32 位平台上工作。