继承是实现软件重用的一种方式 。
在C++中拥有另一种实现软件重用的方式-----
Composition:对象组合用已经有的对象制造新的对象
(设计一个类的时候它的成员变量可以是另一个类的对象)
对象组合的两种方式:(内存模型复杂度:访问对象时既可以通过对象本身访问,也可以通过指针访问)
- Fully (全部地、充足地) inclusion
- By reference (通过引用)inclusion
By reference :组合的对象不是我的一部分,我只是知道它在哪儿能够去访问它(成员变量是指针)
java只能By reference
Example:类SavingAccount里面 包含两个private对象
----属于Person类的saver 和 属于Currency类的balance
这里的成员变量是直接使用 而没有用指针
说明是运用的 Fully inclusion 方法来实现的 Composition
文章插图
所以 在这个Example里 SavingAccount类的构造函数应该使用
Initializer list(初始化列表)的方法定义:
而输出就使用m_saver.ptint()即原本就含有的输出方法
文章插图
嵌入式对象:1.所有的嵌入式对象都需要初始化
- -如果你没有提供参数 你就要使用默认初始化函数
- -任何数量的对象都要通过逗号分开
- -是可选择的(也可以不使用初始化列表)
- -提供了参数给子构造函数
name ( args参数 ) [ ' : ' initialization list ] ' { '...' } '
文章插图
公共对象VS私有对象他们都是在制造嵌入式对象
- 他们是底层实现的一部分
- 新对象只有一部分旧对象的公共接口
文章插图
【C++自学笔记 Composition:对象组合】
推荐阅读
- 笔记本电脑买多少钱的比较好 想要提升办公 笔记本电脑多少钱的比较好
- 笔记本独显好还是集显好啊
- 盗墓笔记续集有哪些粤语讲古 盗墓笔记续集有哪些
- 盗墓笔记系列的正确观看顺序 盗墓笔记系列正确观看顺序 盗墓笔记按顺序怎样看
- 盗墓笔记续集有哪些 盗墓笔记续集有哪些?
- 盗墓笔记有续集么 盗墓笔记有续集么?
- 盗墓笔记有续集吗? 盗墓笔记有续集吗
- 华硕F83v笔记本电池充电时橙色充电灯不停闪烁
- 华硕F83V笔记本充电多久
- 华硕笔记本F83V开机在第二次出现华硕Logo的时候才能正常启动,是什么原因?