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

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

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

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

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

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

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

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

 

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

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

  2.继承带来的性能问题

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

 

 

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

你可能感兴趣的:(编程)