c 初始化成員列表 C 成員物件和封閉類

2021-10-17 08:07:41 字數 1357 閱讀 4492

成員物件與封閉類

類裡有其他物件則該物件叫 「成員物件」,有成員物件的類叫「封閉類」。

上例中,如果 ccar 類不定義建構函式,則會使用預設的無參建構函式,那麼下面的語句會編譯出錯:

ccar car;
因為編譯器不明白 ccar 類中的 tyre 成員物件該如何初始化。而 engine 成員物件的初始化則沒問題,因為用 cengine 類的預設建構函式即可。

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

具體的做法是:

通過封閉類的建構函式的初始化列表。

構造和析構順序

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

成員物件的建構函式執行順序,與在封閉類定義成員物件的順序一致。

當封閉類的物件消亡時,只需要記住一句話:先構造的物件,後析

所以由於封閉類是最後才被構造的,所以封閉類物件最先析構。

通過下面的**的例子,就更能明白封閉類和成員函式的構造和析構的順序了:

執行結果:

ctyre 建構函式

cengine 建構函式

ccar 建構函式

ccar 析構函式

cengine 析構函式

ctyre 析構函式

封閉類的複製建構函式

輸出結果:

a 建構函式

a 複製建構函式

●編號774,輸入編號直達本文

●輸入m獲取文章目錄

c語言與c++程式設計

分享c/c++技術文章

C 初始化成員列表

c 在類的建構函式中,可以兩種方式初始化成員資料 data member 1,在建構函式的實現中,初始類的成員資料。諸如 class point int getx int gety 2,還可以定義初始化成員列表 initializer list 來初始化成員資料 data member 改寫建構函式...

C 建構函式初始化成員列表

1.只能在建構函式初始化列表初始化的成員變數的型別?a.const成員變數 b.引用型別的成員變數 c.static不能在初始化列表中進行初始化 d.類成員變數中有自定義型別的變數最好在初始化列表中進行初始化 2.初始化列表的順序?初始化列表的初始化順序是依據類成員變數定義的順序來決定的。3.關於s...

C 中建構函式初始化成員列表總結

1.只能在建構函式初始化列表初始化的成員變數的型別?a.const成員變數 b.引用型別的成員變數 c.static不能在初始化列表中進行初始化 d.類成員變數中有自定義型別的變數最好在初始化列表中進行初始化 2.初始化列表的順序?初始化列表的初始化順序是依據類成員變數定義的順序來決定的。3.關於s...