zoukankan      html  css  js  c++  java
  • 条款39:明智的使用private继承

    首先看一下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
Copyright © 2011-2022 走看看