您的位置:首页 > 其它

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

2015-10-18 16:59 225 查看
首先看一下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就是这样。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: