条款39:明智而审慎地使用private继承

  1. 当使用private继承的时候,编译器不会将derited自动转化为base
  2. 使用private继承来的所有成员,在派生类中都是private属性,无论它们在base中是public还是protected
  3. private继承的含义:
    • 根据某物实现出,但是当使用这一层面的含义的时候,请尽量使用“复合”(条款38)。
  4. 不能使用复合代替private继承的情况:当一个意欲成为derived class者想访问一个意欲成为base class这的protected成分,或为了重新定义一个或多个virtual函数。
    • 实现被继承,接口应略去
    • 即使面对virtual这种情况,使用复合来替换private继承是不合理的,更好的方法仍然不是private继承,而是public继承+复合的方式(P88)。这样可以降低widget(一个类)编译的依存性,并实现java中final(不允许重写基类中virtual函数)的效果
  5. 在考虑过所有其他方案之后,如果仍然认为private继承是“表现程序内两个classes之间的关系”的最佳办法,这才用它。通常需要考虑复合和public继承的结合。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容