Private继承与containment的取舍

两者都能实现has-a关系,但是containment更受青睐。原因有如下几点:
1、清晰。因为其他类在本类中的表现形式是明确的类对象,这样你就可以通过成员对象名来调用你想调用的成员对象的public接口来完成本类的功能。而使用private继承相对抽象;
2、private继承会引起很多问题。比如说多继承引起的名称歧义问题;
3、containment允许你使用相同类的多个不同的对象,而private继承只允许你使用父类的无名对象,这对于处理对象内部成分的细节很是麻烦。
不过private继承也有它的好处:
1、父类的protected成员相对于外界来说是不可见的,却是面向子类的接口,如果你要达到调用父类protected成员的目的就必须使用private继承。
2、就是当你要重写父类的virtual函数的时候,因为它必须通过继承机制来实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,043评论 19 139
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,618评论 0 11
  • 1.面向对象三大特性 -封装性 -继承性 -多态性 2.什么是封装 封装性就是隐藏实现细节,仅对外公开接口。 3....
    梦夜繁星阅读 4,765评论 0 6
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 5,526评论 4 12
  • 经常在展厅和客户进行交易洽谈的时候,听到客户说:“把后面那几百块零头抹掉吧”,“你们这么大个店,几十万的车都卖了,...
    打不死的小小强阅读 5,039评论 0 1

友情链接更多精彩内容