码迷,mamicode.com
首页 > 编程语言 > 详细

Effective C++ 条款38 通过复合塑模出has-a或"根据某物实现出"

时间:2015-09-10 22:31:44      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:

1. public继承体现is-a关系,要求接口的完全继承,而复合体现has-a或"根据某物实现出"的关系.

    当复合发生在应用域(世界中的某些事物,如人,汽车,一张剪辑视频画面等)内的对象之间,表现出has-a关系,当发生在实现域(细节上的人工制品,如缓冲区,互斥器,查找树等)内,表现出is-implementation-in-terms-of(根据某物实现出)的关系.

2. 对于is-implementation-in-terms-of,例如基于list实现set(当空间比时间更重要的时候可能这样做),那么使用public继承显然是不合适的,因为list可以进行的操作set未必允许(例如拥有两个相同元素),因此可以使用复合,:

技术分享
template<Set>
class Set{
public:
    bool member(const T& item) const;
    void insert(const T& item);
    void remove(const T& item);
    std::size_t size() const;
    ...
private:
    std::list<T> rep;
}
//具体实现略
View Code

以上例子中set对象就是"根据list实现出来"的.

Effective C++ 条款38 通过复合塑模出has-a或"根据某物实现出"

标签:

原文地址:http://www.cnblogs.com/reasno/p/4799199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!