条款39:明智的使用private继承

本文详细阐述了C++中private继承的法则、底层含义及其在减少对象尺寸上的优化作用,并提供了在何种情况下选择private继承的指导原则。同时,文章对比了private继承与组合继承的区别,强调了在设计类结构时如何权衡两者以达到最佳的代码组织和性能优化。

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

首先看一下private继承的法则:
class之间的继承关系如果是private的话,那么编译器不会将一个derived对象自动当作为一个base class对象。

从base class继承而来的所有方法以及属性,在derived class都会变成是private的。
 
private继承的底层含义实际上是;implemented in terms of,通过private继承的主要目的是使得derived class使用base 已经做好的某些东西,但是外部仍然是无法岁base class的部分进行访问的。(实现继承,省略接口部分)
 
虽然说private继承以及组合都可以实现implemented in terms of的关系,但能使用组合还是应该尽量使用组合。
 
小结:
当面对  不存在is-a关系的两个class的时候,其中一个需要访问另一个的protected成员,或者需要重新定义其一或者多个virtual函数的时候,private才有可能成为适合的选择。
在考虑完public 组合继承的方式之后,才应该考虑private继承
 
与符合不同的是,private继承可以造成empty base的最优化,这对于某些希望减小对象尺寸的库作者来说还是很有用的(例如stl就是这样。)

转载于:https://www.cnblogs.com/-wang-cheng/p/4889793.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值