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