以下代码,为什么D 的大小是8字节呢?
多重继承的G,无虚函数,4字节(子类有个INT),如如INT,就是1
多重继承的I,有虚函数,也是4字节。
D和I的区别就是,带虚函数的子类是否有继承,为什么就不一样呢??求教方家
class a {};
class b{};
class c:public a{
virtual void fun()=0;
};
class d:public b,public c{};
//SIZE 8
//class d:public b{};
//SIZE 1
//class d:public c{};
//SIZE 4
class E:public a,public b
{
//SIZE 1
};
class F
{
int i;
};
class G:public a,public F
{
//SIZE 4
};
class H
{
virtual void fun();
};
class I:public a,public H
{
//SIZE 4
};
int main()
{
cout<<"sizeof(a)"<<sizeof(a)<<endl;
cout<<"sizeof(b)"<<sizeof(b)<<endl;
cout<<"sizeof(c)"<<sizeof(c)<<endl;
cout<<"sizeof(d)"<<sizeof(d)<<endl;
cout<<"sizeof(e)"<<sizeof(E)<<endl;
cout<<"sizeof(G)"<<sizeof(G)<<endl;
cout<<"sizeof(H)"<<sizeof(H)<<endl;
cout<<"sizeof(I)"<<sizeof(I)<<endl;
return 0;
}