struct A
{
virtual void f1() {}
};
struct B: public A {};
struct C: public A {};
struct D: public B,public C {};
int main()
{
cout<<sizeof(A)<<" "<<sizeof(B)<<" "<<sizeof(C)<<" "<<sizeof(D)<<endl;
cout<<"_______"<<endl;
return 0;
}
我系统中的输出(c9.o):8 8 8 16
这是否意味着D有2个虚拟指针到2个虚拟表?如果是的话,在哪里
是指针位置?
如果我们从f1
中移除了struct A
,则输出为:1 8 8 16
。同样的问题也在这里。
如果我们不移除f1
,现在B
和C
从A
继承虚拟,则输出为:8 8 8 16
。同样的问题也在这里。