C++零基礎教程 ,抓住兩點即可輕松上手C++類的組合
前言
上一章節(jié)主要是詳細介紹了C++構(gòu)造函數(shù)和析構(gòu)函數(shù)。不清楚的可以回顧一下哦。本章節(jié)主要針對于C++類的組合做以詳細介紹。

類的組合
當一個類過于復雜,我們可以將其拆分成多個類,拆分成的類成為組合類的子對象,例如,一個窗口由按鈕和編輯框組成,我們會把窗口當做窗口類,包含按鈕類的對象,包含編輯框的類?;蛘呤褂冒鄳惖闹羔樢彩强梢缘摹?通過對復雜對象進行分解、抽象,使我們能夠?qū)⒁粋€復雜對象
理解為簡單對象的組合。分解得到復雜對象的部件對象,這些部件對象比它高層的復雜對象更容易理解和實現(xiàn)。然后由這些部件對象來“裝配”復雜對象。
類的組合難點:
組合中構(gòu)造函數(shù)的寫法
組合中構(gòu)造順序與析構(gòu)順序問題
組合難點之構(gòu)造函數(shù)寫法
原則:
對本類成員數(shù)據(jù)賦值,也要對對象成員初始化。
構(gòu)造函數(shù)形式:
類名::類名(形參表):對象1(參數(shù)),對象2(參數(shù))……
專業(yè)化叫做初始化參數(shù)列表,普通的函數(shù)其實也是可以使用初始化參數(shù)列表,如下代碼:

注意點: 初始化參數(shù)列表用的是包含的對象,并不是相關(guān)類中的構(gòu)造函數(shù)名
類的組合之構(gòu)造和析構(gòu)順序問題
類的組合之構(gòu)造和析構(gòu)順序問題其實對于開發(fā)而言,并不需要太關(guān)心,會寫組合即可,但是很多學業(yè)需求或者面試可能有這方面問題,故在這里簡單概述,有如下4個類,請分析程序結(jié)果:

D類構(gòu)造之前必須構(gòu)造ABC的對象,至于這三個類的構(gòu)造順序和初始化參數(shù)列表無關(guān),只和他們在D類中的定義順序有關(guān)。至于析構(gòu)順序我這里就不列舉出來了,和構(gòu)造順序相反,有興趣的可以去嘗試下。
無參構(gòu)造函數(shù)
無參構(gòu)造函數(shù)其實和上文中的構(gòu)造函數(shù)是一樣的,只是我們在寫的時候可以省略不寫,但是本質(zhì)上我們都需要知道其實組合類構(gòu)建對象的時候,各自的分支類構(gòu)造函數(shù)都會被調(diào)用。試分析一下代碼:

雖說這里沒有寫初始化參數(shù)列表,但是大家心里一定要清楚哦,這其實是一種省略的寫法而已。
類中類的一些事兒
除了類的組合方式之外,還有一種特殊的存在模式,就是類中類了,如以下內(nèi):

關(guān)于類中類的訪問主要注意以下這個點:
類中類的訪問采用外部類類名::內(nèi)部類名 的方式使用
類中類受權(quán)限限定,即上圖中的woman外部不可訪問

尾言
本節(jié)課就到這里了
本章節(jié)作業(yè): 用C++類的組合方式實現(xiàn)一個繪制多邊形的類。
繪制圓
繪制矩形
繪制線
繪制點
上一章節(jié):13圖解析構(gòu)造函數(shù)析構(gòu)函數(shù)
更多C/C++教程,微信掃碼關(guān)注公眾號哦!?。?/p>