私有继承和聚合的分析比较

    有时候程序员想利用现有的基类(即通过派生类使用现有的功能),但没有is-a关系,在这种情况下,私有继承就可以有用了。

   使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会称为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不继承基类的接口。使用私有继承,将继承实现。

  聚合将对象作为一个命名的成员对象添加到类中,而私有继承将对象作为一个未被命名的继承对象添加到类中。

  聚合与使用私有继承相比,使用聚合的另一个不明显的优点是,这消除了继承层次结构,从而避免了“使用虚方法的代价”以及,讨论的v-table,进而可提高性能。

  私有继承的优点可以归纳为:

  1.派生类能够访问基类的保护成员函数

  2.派生类可以覆盖基类的虚函数:

 

  但与这些优点相伴而行的是如下代价:

  1.在多程序员编程环境中,代码的灵活度降低,更容易出错

  2.继承带来的性能问题

因此,在可以使用聚合或组合的情况下,最好避免使用私有继承。

 

 

在下实力有限,若文章有问题,希望大家指出问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值