本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:在应用域,复合意味着 has-a. 在实现域.复合意味着 is-implemented-in-terms-of  演示样例: template<typename T> //将list应用于 Set.错误做法 class Set: public std::list<T> {...}; 解析: public 继承表示 is-a.即假设D是一种B,对B为真的每一件事.对D也应…
结论: 复合的意义和public继承全然不同. (public继承參考:条款32 确定你的public继承塑模出is-a关系) 在应用域,复合意味着has-a(有一个).在实现域,复合意味着is-implemented-in-terms-of(依据某物实现出) 复合(composition)是类型之间的一种关系,当某种类型的对象内含其它类型的对象,便是这样的关系: class Address{...}; class PhoneNumber{...}; class Person{ ... priv…
复合(composition)的意义和public继承完全不同. 在应用域(application domain),复合意味has-a(有一个).在实现域(implementation domain),复合意味is-implemented-in-terms-of(根据某物实现出).…
NOTE: 1.复合(composition)的意义和public继承完全不同. 2.在应用域(application domain),复合意味 has-a(有一个). 在实现域(implementation domain),复合意味is-implemented-in-terms-of(根据某物实现出),…
1.什么是复合? 复合是类型之间的一种关系,某种类型的对象内含其他类型的对象. 2.为什么需要复合,他解决什么问题? 为了代码复用. 3.复合有两层含义:Has-A和根据某物实现出.在应用域中,表示Has-A,比如:Person有一个地址,有一个所属公司.在实现域,表示根据某物实现出,比如缓冲区,互斥器等概念. 4.复合可以分为:关联,聚集,组合.关联是1对1的关系,聚集和组合是多对1的关系.组合比聚集的关系更紧密,举例来说,大雁聚集成雁群,两个翅膀(和其他的部位)组合成大雁. 5.关联与依赖有…
如果说public是一种is-a的关系的话,那么复合就是has-a的关系.直观来说,复合就是在一个类中采用其他类的对象作为自身的成员变量,可以举个例子,像下面这样: class Person { private: string Name; // 复合string类型的变量 PhoneNumber HomeNumber; // 复合PhoneNumber对象 PhoneNumber TelephoneNumber; }; 我们一般会说人有名字,有家庭电话,有手机电话等,但我们一般不会说人是一个名字…
(这里的验证结果是针对返回值优化的,其实和条款22本身所说的,考虑以操作符复合形式(op=)取代其独身形式(op),关系不大.书生注) 在[More Effective C++]条款22的最后,在返回值的返回方式上,大师Meyers推荐使用表达式[returnT(lhs)+=rhs;]这种使用匿名临时变量的方式,理由是“自古以来未具名对象总是比具名对象更容易被消除”,这种写法将更好地帮助编译器实现返回值优化(ReturnValue Optimization,简写RVO). 针对上述说法,我在两款…
More Effective C++ 条款0,1 条款0 关于编译器 不同的编译器支持C++的特性能力不同.有些编译器不支持bool类型,此时可用 enum bool{false, true};枚举类型来模拟bool类型.这允许参数类型为int和bool的函数重载,但是这样做的缺陷是,对于内置的比较运算符,其仍返回int类型. f(int);f(bool); f(a < b); // 会调用f(int),但其实用户期望调用f(bool). 但是一旦改用支持bool类型的编译器,情况可能会发生改变…
“public继承”意味is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derive class对象也都是一个base class对象.…
(一) public继承是"is-a"关联,"has-a"或"依据某物实现出(is-implemented-in-terms-of)"的意思--当复合发生在应用域内的对象之间.表现出has-a关系:当它发生于实现域内则是表示"依据某物实现出"的关系. 应用域部分,相当于你塑造的世界中的某些事物,比如人.汽车等. 后者的对象则是实现细节人工产品(这产品现实世界中是没有的).像什么mutex,list,container等等. 这…