class ElectricMotor { public: ElectricMotor () {}; virtual ~ElectricMotor () {}; public: void StartMotor () { Accelerate (); Cruise (); } void StopMotor () { cout << "Motor stopped" << endl; }; private: void Accelerate () { cout << "Motor started" << endl; } void Cruise () { cout << "Motor running at constant speed" << endl; } };
class Fan { public: Fan () {}; ~Fan () {} void StartFan () { m_ElectricMotor.StartMotor(); } void StopFan () { m_ElectricMotor.StopMotor (); } private: ElectricMotor m_ElectricMotor; };
这样子利用聚合比私有继承好,因为电动机应该是风扇里面的一部分,安装逻辑,应该是聚合好
私有继承虽然有如下优点:
派生类可以访问基类的保护成员函数
派生类可以覆盖基类的虚函数
但是伴随的确是如下,
在多程序员编程环境下,代码灵活性差,容易出错
继承带来的性能问题
而聚合这个就像装饰者模式,很好使用,所以能用聚合就避免私有继承.
作者: 林羽飞扬
出处:http://www.cnblogs.com/zhengyuhong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留作者信息,且在文章页面明显位置给出原文连接