小编use*_*522的帖子

虚拟继承是否会增加派生类的大小?

可能重复:
虚拟对象大小

虚拟继承是否会更改派生类的大小?我执行了以下代码,其中有两个派生类,一个是虚拟继承的,另一个是非虚​​拟继承的:

class A {
 public:
int a;
  virtual void a1();
};


class non_vir_der: public A{
 public:
int c;
  virtual void aa();
};


class vir_der: public virtual A{
public:
int d;
virtual void bb();
};

int main()
{
cout<<sizeof(non_vir_der)<<"\n";
cout<<sizeof(vir_der)<<"\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

12(imo:4(int a)+ 4(int c)+ 4(vir ptr))

16(额外4?)

再次检查我是否错过了什么,我尝试了所需的最小代码,删除了类中的所有整数,输出为:

4

4

第二个输出表明两个派生类的大小相同.为什么第一次运行中的vir_der 16的大小,为什么不是12?

c++ size virtual-inheritance

3
推荐指数
1
解决办法
1102
查看次数

标签 统计

c++ ×1

size ×1

virtual-inheritance ×1