C++空白基类最优化(EBO或EBCO)

本文探讨了C++中的一个现象,即空类在实际占用空间中通常不为0,而是1个字节。这与编译器为了确保对象唯一性而插入的额外字节有关。当空类作为其他类的基类时,一些编译器会进行空白基类最优化(EBO或EBCO),在子类中消除基类占用的空间。然而,EBO不是C++标准强制要求的,且不适用于多重继承。通过EBO,可以提高对象布局的效率,并在STL等实现中发挥关键作用。文章通过代码示例展示了EBO的影响,并指出其优化效果在继承链中不会传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于C++中的一个空类 

 

class X

 {

 }; 

 

事实上并不是空的,sizeof(X)并不等于0 一般的结果是1。每个X的对象都有一个隐晦的1bytes,是被编译器安插进去的一个char,这样可以使得这个class的两个objects在内存中配置独一无二的地址。

 

X作为另一个类的成员时,如:

 

class A

 {

 public:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值