effective C++笔记之条款40: 通过分层来体现“有一个”或“用…来实现”
来源:互联网 发布:java常见的开发框架 编辑:程序博客网 时间:2024/05/23 11:55
- 分层:使某个类的对象成为另一个类的数据成员,从而实现将一个类构筑在另一个类之上,这一过程称为“分层”。
- 公有继承的含义是“是一个”。对应地,分层的含义是“有一个”或“用…来实现”。
- Person对象“有一个”名字,地址,电话号码和传真号码。
- Set模板要求用来表示任意对象的集合,并且集合中没有重复元素。因为list可以包含重复对象,所以,用公有继承不行,因为Set“是一个”list是错误的,他不能包含重复元素。正确的方法是让Set对象“用list对象来实现”。如下所示:
template <classT>class Set{public: bool member(const T& item) const; void insert(const T& item); void remove(const T& item); int cardinality() const;private: list<T> rep;};
Set的成员函数可以利用list以及标准库其他部分所提供的大量功能。所以实现代码很简单:
template <class T>bool Set<T>::member(const&item) const{ return find(rep.begin(), rep.end(), item) != rep.end()); }template <class T>void Set<T>::insert(const T& item){ if(!member(item)) rep.push_back(item); }template <class T>void Set<T>::remove(constT& item){ list<T>::iterator it =find(rep.begin(), rep.end(), item); if (it != rep.end()) rep.erase(it);}template<class T>int Set<T>::cardinality() const{ returnrep.size(); }这些函数很简单,可以将它们作为内联函数;
- effective C++笔记之条款40: 通过分层来体现“有一个”或“用…来实现”
- 条款 40: 通过分层来体现"有一个" 或" 用...来实现"
- 通过分层来体现 "有一个" 或 "用...来实现"
- effective C++笔记之条款35: 使公有继承体现“是一个”的含义
- 《Effective C++》学习笔记条款33 避免遮掩继承而来的名称
- Effective C++:条款38:通过复合塑模出has-a或“根据某物实现出”
- 读书笔记《Effective C++》条款38:通过复合塑模出has-a或“根据某物实现出”
- effective C++笔记之条款36、37: 区分接口继承和实现继承、绝不要重新定义继承而来的非虚函数
- effective C++笔记之条款38: 绝不要重新定义继承而来的缺省参数值
- 一个UILabel 使用不同的颜色或不同的字体来体现字符串
- Effective C++:条款33:避免遮掩继承而来的名称
- Effective C++:条款36:绝不重新定义继承而来的non-virtual函数
- Effective C++:条款37:绝不重新定义继承而来的缺省参数值
- 读书笔记《Effective C++》条款33:避免遮掩继承而来的名称
- 读书笔记《Effective C++》条款36:绝不重新定义继承而来的non-virtual函数
- 读书笔记《Effective C++》条款37:绝不重新定义继承而来的缺省参数值
- [翻译] Effective C++, 3rd Edition, Item 38: 通过 composition(复合)模拟 "has-a"(有一个)或 "is-implemented-in-terms-of"(是根据……实现的)
- 《Effective C++》学习笔记——条款40
- HTML基本标签
- gtest使用简单总结
- Linux USB Video Class with Camera
- (重要)开源项目live555学习心得
- 标题元素
- effective C++笔记之条款40: 通过分层来体现“有一个”或“用…来实现”
- SQL Server 2012可编程性新特性_7_分析函数
- linux学习知识体系
- DATEPART参数
- freetextbox显示图片
- 常用资料参考
- 段落
- GRUB常用命令以及多系统引导经验谈
- 连续求和分析函数max(...)/min(...)/avg(...)/sum(...) over ... ——分析函数1