谨慎使用私有继承(3)

2008-02-23 05:28:49来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



  尽管如此,我们还是要回归基础。大多数 classes(类)不是空的,所以 EBO 很少会成为 private inheritance(私有继承)的一个合理的理由。此外,大多数 inheritance(继承)相当于 is-a,而这正是 public inheritance(公有继承)而非 private(私有)所做的事。composition(复合)和 private inheritance(私有继承)两者都意味着 is-implemented-in-terms-of(是根据……实现的),但是 composition(复合)更易于理解,所以您应该尽您所能使用他。

  private inheritance(私有继承)更可能在以下情况中成为一种设计策略,当您要处理的两个 classes(类)不具备 is-a(是个)的关系,而且其中的一个还需要访问另一个的 protected members(保护成员)或需要重定义一个或更多个他的 virtual functions(虚拟函数)。甚至在这种情况下,我们也看到 public inheritance 和 containment 的混合使用通常也能产生您想要的行为,虽然有更大的设计复杂度。谨慎使用 private inheritance(私有继承)意味着在使用他的时候,已考虑过任何的可选方案,只有他才是您的软件中明确表示两个 classes(类)之间关系的最好方法。

  Things to Remember

  ·private inheritance(私有继承)意味着 is-implemented-in-terms of(是根据……实现的)。他通常比 composition(复合)更低级,但当一个 derived class(派生类)需要访问 protected base class members(保护基类成员)或需要重定义 inherited virtual functions(继承来的虚拟函数)时他就是合理的。

  ·和 composition(复合)不同,private inheritance(私有继承)能使 empty base optimization(空基优化)有效。这对于致力于最小化 object sizes(对象大小)的库研发者来说可能是很重要的。



标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 创建和使用库:静态、共享和动态

下一篇: C 中extern