C++中组合的使用

 

 FAQ 5.09

        组合使软件在开发过程中可以聚合已存在的组件而不用去新建一个。

        组合(有时候叫聚合)是将一个对象(部分)放到另一个对象里(组合)。它是一种 has-a 的关系。例如,FordTaurus是由Engine,Transmission,InstrumentPanel,等等组合而成.也就是说,FordTaurus含有一个Engine.(Engine 是FordTaurus的Part-of):

#include 
using namespace std;

class Engine {
public:
  virtual void start();
};

void Engine::start()
{
  cout << "starting Engine/n";
}

class FordTaurus {
public:
  virtual void start();
protected:
  Engine engine_;    // An Engine is part of a FordTaurus
};
void FordTaurus::start()
{
  cout << "starting FordTaurus/n";
  engine_.start();
}

int main()
{
  FordTaurus taurus;
  taurus.start();
}

 

有时候开发者在他们该使用组合的时候错误的使用继承(kind-of),例如,他们可能使FordTaurus从Engine继承,这是把Kind-of和Part-of给搞混乱了.

你可能感兴趣的:(C++中组合的使用)