类的继承与组合
C++中设计孤立的类是非常容易的,难的是如何设计正确的基类和派生类。
继承(inheritance) 组合(composition)
- 如果类A和类B没啥太大关系,不要为了让类B多点功能就硬是让它继承类A,这样就好像一个好好地大老爷们你给他各种吃人参,吃甲鱼补身体一样。
- 还有关键的一点是如果B是A的一种(a kind of)这时候就要用到继承了,比如Man是一种(a kind of)Human。加强一下,如果逻辑上B是A的一种,并且,A的所有功能都对B有益,则继承。一个特例就是一个圆继承椭圆的话,它的长轴短轴继承的就毫无意义了。
- 组合的意义是一部分(a part of)。如果A是B的一部分,则B不能继承A,而是B由A和其他类组合而成的。