C++ 私有继承 VS Composition

private inheritance is a syntactic variant of composition (AKA aggregation and/or has-a).

 

class Engine {
 public:
   Engine(int numCylinders);
   void start();                 
// Starts this Engine
 };
 
 class Car {
 public:
   Car() : e_(8) { }             
// Initializes this Car  with 8 cylinders
   void start() { e_.start(); }  
// Start this Car  by starting its Engine
 private:
   Engine e_;                    
// Car  has-a Engine
 };

 

class Car : private Engine {     // Car  has-a Engine
 public:
   Car() : Engine(8) { }         
// Initializes this Car  with 8 cylinders
   using Engine::start;          
// Start this Car  by starting its Engine
 };

 

到底什么时候使用私有继承,什么时候组合?

Use composition when you can, and use private inheritance when you have to.

 

我在MITK的源码里看到大量使用Private Inheritance。故有此疑问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值