c++中类对象分配内存大小与虚继承的一些问题

本文通过一个C++示例程序探讨了虚继承机制下派生类的内存布局情况。主要分析了不同继承方式对类实例大小的影响,并针对具体运行结果进行了解释。
#include <iostream>
class Base
{
public:
int a;

};


class Derive1 : public virtual Base
{
public:
int c;
};

class Derive2 : virtual public Base
{

};


class d_Derive : public virtual Derive1, public virtual Derive2
{
};

int main(void)
{
Base bb;
Derive1 d1;
Derive2 d2;
d_Derive dd;
std::cout << sizeof(bb) << std::endl
<< sizeof(d1) << std::endl 
<< sizeof(d2) << std::endl
<< sizeof(dd) << std::endl;
return 0;

}

运行结果为:



我的困惑:

1、为什么d1的大小为12

2、为什么d2的大小为8

3、为什么dd的大小为20,不是说虚继承共享虚基类的子对象吗?

。。。。。。还在探索中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值