class Base{
void f(){}
};
class Derived:public Base(){
void f1(){}
};
class Derived:public Base(){
void f2(){}
};
sizeof(Base);
sizeof(Derived1);
sizeof(Deirived2);
- Base类没有任何数据成员,但是Base类的对象占用的空间却不是0,由于对象存储在内存中,不占用空间的对象在内存中无法标识,因此Base类的对象在内存中会有一个占位符,占用空间为1个字节。
- Derived1类继承Base类,没有任何数据成员,因此Derived1类的对象也只有一个占位符,占用空间为1个字节。
- Derived2类虚继承Base类,没有任何数据成员,但是由于虚继承的关系,Derived2类的对象中会有一个指向虚基类的只恨,指针占用的空间为4个字节,因此Derived2类的对象占用空间为4个字节。
- sizeof(Base)=1;size(Derived1)=1;size(Derived2)=4