• 条款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就是这样。)
  • 相关阅读:
    检测iphone设备是否越狱
    iphone震动提示
    单线,双线
    塔式服务器
    IPHONE锁屏控制代码
    iPhone开发之显示WiFi提示
    代码关闭程序的几种方法
    获取手机左边音量+ -按键的事件方法或私有api
    1u
    servlet在什么时候调用destroy()方法
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4889793.html
Copyright © 2020-2023  润新知