虚拟基类是一种防止使用多重继承时给定类的多个实例出现在继承层次结构中的方法。然后针对以下课程
class level0 {
int a;
public :
level0();
};
class level10:virtual public level0 {
int b;
public :
level10();
};
class level11 :virtual public level0 {
int c;
public :
level11();
};
class level2 :public level10,public level11 {
int d;
public:
level2();
};
Run Code Online (Sandbox Code Playgroud)
我得到了以下课程的大小
等级大小0 4
10级的大小12
11级的大小12
2级的大小24
但是当我从级别10和级别11的继承中删除虚拟时,得到以下输出
等级大小0 4
等级大小10 8
等级大小11 8
2级大小
如果虚拟继承阻止了一个基类的多个实例,那么为什么在虚拟继承的情况下类的大小更大?