三 類與物件提高 成員物件和封閉類

2021-10-08 11:57:06 字數 797 閱讀 3753

乙個類的成員是其他類的物件,就把這樣的成員成為成員物件

有成員物件的類叫 封閉(enclosing)類

class

ctyre

//輪胎類

// : 後初始化列表,可以對成員進行初始化};

class

cengine

//引擎類

;class

ccar

//汽車類(封閉類)

;ccar::

ccar

(int p,

int tr,

int w)

:price

(p),

tyre

(tr, w)

//tyre的初始化

;

上例中,如果ccar類不定義建構函式,則下面的語句會編譯出錯: ccar car;

因為編譯器不明白,car. tyre 該如何初始化。car. engine的初始化沒問題,用預設建構函式即可

任何生成封閉類物件的語句,都要讓編譯器明白,物件中的成員物件,是如何初始化的。

具體做法為:通過封閉類的建構函式的初始化列表。

成員物件初始化列表中的引數可以是任意表示式,包括函式、變數,只要表示式中的函式or變數有定義即可

1、封閉類物件生成時,先執行所有物件成員的建構函式,然後再執行封閉類的建構函式

2、物件成員的構造函式呼叫次序和物件成員在類中的說明次序一致,與他們在成員初始化列表**現的次序無關。

3、當封閉類的物件消亡時,先執行封閉類的析構函式,然後再執行成員物件的析構函式。次序與建構函式相反。

成員物件和封閉類

成員物件 乙個類的成員變數是另乙個類的物件 包含成員物件的類叫封閉類 enclosing class ctyre 初試化列表 class cengine class ccar ccar ccar int p,int tr,int w price p tyre tr,w int main 如果ccar...

成員物件和封閉類

成員物件和封閉類 乙個類的成員變數如果是另乙個類,就稱之為成員物件。包含成員物件的類叫做封閉類。當封閉類的物件產生並初始化時,它包含的成員物件也需要被初始化,這時就會引發對成員物件 建構函式的呼叫。如何讓編譯器知道到底是使用哪個建構函式初始化的呢?這可以通過在定義封 閉類的建構函式時,新增初始化列表...

C 成員物件和封閉類

有其他類的物件作為 成員物件的類叫封閉類。任何生成封閉類物件的語句,都要讓編譯器明白,物件中的成員物件,是如何初始化的。具體做法是通過封閉類的建構函式的初始化列表。封閉類物件生成時,先執行所有物件成員的建構函式,然後才執行封閉類的建構函式。物件成員的構造函式呼叫次序和物件成員在類中的說明次序一致,與...