これは一種の宿題の質問です。次のコードの場合、
#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ビットプラットフォームで作業しています。