C++自學筆記 Composition:對象組合

繼承是實現軟件重用的一種方式 。
在C++中擁有另一種實現軟件重用的方式-----
Composition:對象組合用已經有的對象制造新的對象
(設計一個類的時候它的成員變量可以是另一個類的對象)
對象組合的兩種方式:(內存模型復雜度:訪問對象時既可以通過對象本身訪問,也可以通過指針訪問)

  • Fully (全部地、充足地) inclusion
  • By reference (通過引用)inclusion
Fully:組合的對象可以是我的對象的一部分 (成員變量是對象本身)
By reference :組合的對象不是我的一部分,我只是知道它在哪兒能夠去訪問它(成員變量是指針)
java只能By reference
Example:類SavingAccount里面 包含兩個private對象
----屬于Person類的saver 和 屬于Currency類的balance
這里的成員變量是直接使用 而沒有用指針
說明是運用的 Fully inclusion 方法來實現的 Composition
C++自學筆記 Composition:對象組合

文章插圖
所以 在這個Example里 SavingAccount類的構造函數應該使用
Initializer list(初始化列表)的方法定義:
而輸出就使用m_saver.ptint()即原本就含有的輸出方法
C++自學筆記 Composition:對象組合

文章插圖
嵌入式對象:1.所有的嵌入式對象都需要初始化
  • -如果你沒有提供參數 你就要使用默認初始化函數
2.構造函數可以有初始化列表
  • -任何數量的對象都要通過逗號分開
  • -是可選擇的(也可以不使用初始化列表)
  • -提供了參數給子構造函數
3.語法規則
name ( args參數 )  [ ' : '  initialization list ] ' { '...' } '
C++自學筆記 Composition:對象組合

文章插圖
公共對象VS私有對象他們都是在制造嵌入式對象
  1. 他們是底層實現的一部分
  2. 新對象只有一部分舊對象的公共接口
可以作為公共對象嵌入如果你想要新對象能有子對象的全部的公共接口
C++自學筆記 Composition:對象組合

文章插圖
【C++自學筆記 Composition:對象組合】

    推薦閱讀