class Head
{
public:
void Look(void) { m_eye.Look(); }
void Smell(void) { m_nose.Smell(); }
void Eat(void) { m_mouth.Eat(); }
void Listen(void) { m_ear.Listen(); }
private:
Eye m_eye;
Nose m_nose;
Mouth m_mouth;
Ear m_ear;
};
如果允許Head 從Eye、Nose、Mouth、Ear 派生而成,那么Head 將自動具有Look、Smell、Eat、Listen 這些功能:
// 錯誤的設計
class Head : public Eye, public Nose, public Mouth, public Ear
{
};
上述程序十分簡短并且運行正確,但是這種設計卻是錯誤的。很多程序員經不起“繼承”的誘惑而犯下設計錯誤。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/