【发布时间】:2013-06-21 09:40:01
【问题描述】:
虚拟基类是一种在使用多重继承时防止给定类的多个实例出现在继承层次结构中的方法。那么对于下面的类
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();
};
我得到了以下大小的类
level0 4 的大小
level10 12的大小
level11 12的大小
level2 24 的大小
但是当我从 level10 和 level11 的继承中删除 virtual 时,我得到了以下输出
level0 4 的大小
10 级大小 8
level11 8 的大小
20 级大小
如果虚拟继承阻止了基类的多个实例,那么为什么在虚拟继承的情况下类的大小更大?
【问题讨论】:
-
level0越大,效果会越好。事实上,它的大小在噪音中消失了。给它 3 或 4 个int数据成员,事情会更清楚。 -
@Marius 不,那个问题有一个
virtual,这个问题有两个。答案使用单个virtual作为尺寸描述的一部分:它不能作为上述答案。 -
你在什么架构上运行它?指针的大小与
int的大小是多少?
标签: c++ inheritance virtual