C++中组合的使用

来源:互联网 发布:大数据分析课程 编辑:程序博客网 时间:2024/06/05 07:31

http://blog.csdn.net/jia_xiaoxin/article/details/2938032



 FAQ 5.09

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

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

#include <iostream>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给搞混乱了.