- 当使用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继承
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 《Effective C++ 中文版 第三版》读书笔记 ** 条款 39:明智而审慎地使用 private 继承 ...
- Private继承和public继承是软件生产中两个不同层面上的东西。Public侧重的是业务逻辑,它是从用户角度...