c++正确处理 is-a has-a关系
比如。我们想实现一个Set类,而已经有一个List类可提供给你使用,我们到底用is-a(public继承)关系还是用has-a(组合)关系呢?
1:如果使用is-a关系,则
class Set:public List{
。。。。
};在处理插入的时候,List的insert方法不能满足我们的需要,因为它可以插入重复项。
2:has-a
class Set{
private:
List *m_pList;
};
这样我们可以使用List提供的基础insert方法,而把能不能insert已经数据结构的处理(二叉树)与List分离。