两者都能实现has-a关系,但是containment更受青睐。原因有如下几点:
1、清晰。因为其他类在本类中的表现形式是明确的类对象,这样你就可以通过成员对象名来调用你想调用的成员对象的public接口来完成本类的功能。而使用private继承相对抽象;
2、private继承会引起很多问题。比如说多继承引起的名称歧义问题;
3、containment允许你使用相同类的多个不同的对象,而private继承只允许你使用父类的无名对象,这对于处理对象内部成分的细节很是麻烦。
不过private继承也有它的好处:
1、父类的protected成员相对于外界来说是不可见的,却是面向子类的接口,如果你要达到调用父类protected成员的目的就必须使用private继承。
2、就是当你要重写父类的virtual函数的时候,因为它必须通过继承机制来实现。
Private继承与containment的取舍
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。