“优先使用对象组合,而不是继承”是面向对象设计的原则之一. 组合也叫“对象持有”,就是在类中定义另一类型的成员,继承会破坏类的独立性,增加系统的复杂性,一般系统的继承层次不超过3层.组合拥有良好的扩展性,支持动态组合,因此优先考虑组合方法. 看一个例子,有这样一个类: class Eye { public: void Look(void); }; 现在希望定义一个Head类,也想实现Look的功能,应该使用组合方法,实现代码重用,即: class Head { public: Eye _eye;…