继承是实现软件重用的一种方式。
在C++中拥有另一种实现软件重用的方式-----
Composition:对象组合
用已经有的对象制造新的对象
(设计一个类的时候它的成员变量可以是另一个类的对象)
对象组合的两种方式:
(内存模型复杂度:访问对象时既可以通过对象本身访问,也可以通过指针访问)
- Fully (全部地、充足地) inclusion
- By reference (通过引用)inclusion
Fully:组合的对象可以是我的对象的一部分 (成员变量是对象本身)
By reference :组合的对象不是我的一部分,我只是知道它在哪儿能够去访问它(成员变量是指针)
java只能By reference
Example:
类SavingAccount里面 包含两个private对象
----属于Person类的saver 和 属于Currency类的balance
这里的成员变量是直接使用 而没有用指针
说明是运用的 Fully inclusion 方法来实现的 Composition
所以 在这个Example里 SavingAccount类的构造函数应该使用
Initializer list(初始化列表)的方法定义:
而输出就使用m_saver.ptint()即原本就含有的输出方法
嵌入式对象:
1.所有的嵌入式对象都需要初始化
- -如果你没有提供参数 你就要使用默认初始化函数
2.构造函数可以有初始化列表
- -任何数量的对象都要通过逗号分开
- -是可选择的(也可以不使用初始化列表)
- -提供了参数给子构造函数
3.语法规则
name ( args参数 ) [ ' : ' initialization list ] ' { '...' } '
公共对象VS私有对象
他们都是在制造嵌入式对象
- 他们是底层实现的一部分
- 新对象只有一部分旧对象的公共接口
可以作为公共对象嵌入如果你想要新对象能有子对象的全部的公共接口
标签: # c++
留言评论