解析:我们用程序来实现一个空类和一个多重继承的空类。看看它们的输出结果:
#include<iostream>
#include<memory.h>
#include<assert.h>
using namespace std;
class A
{};
class A2
{};
class B:public A
{};
class C:public virtual B
{};
class D:public A,public A2
{};
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;
return 0;
}
这说明空类所占的空间为1,单一继承的空类空间也是1,多重继承的空类空间也是1.但是虚继承涉及虚表(虚指针),所以sizeof(C)大小为4;