C++ 成員對象和封閉類
小林coding
成員對象與封閉類
類里有其他對象則該對象叫 「成員對象」,有成員對象的類叫「封閉類」。
上例中,如果 CCar 類不定義構造函數(shù),則會使用默認的無參構造函數(shù),那么下面的語句會編譯出錯:
CCar car;
因為編譯器不明白 CCar 類中的 tyre 成員對象該如何初始化。而 engine 成員對象的初始化則沒問題,因為用 CEngine 類的默認構造函數(shù)即可。
任何生成封閉類對象的語句,都要讓編譯器明白,對象中的成員對象,是如何初始化的。
具體的做法是:
通過封閉類的構造函數(shù)的初始化列表。
構造和析構順序
封閉類對象生成時,先執(zhí)行所有成員對象的構造函數(shù),然后才執(zhí)行封閉類的構造函數(shù)。
成員對象的構造函數(shù)執(zhí)行順序,與在封閉類定義成員對象的順序一致。
當封閉類的對象消亡時,只需要記住一句話:先構造的對象,后析構。
所以由于封閉類是最后才被構造的,所以封閉類對象最先析構。
通過下面的代碼的例子,就更能明白封閉類和成員函數(shù)的構造和析構的順序了:
執(zhí)行結果:
CTyre 構造函數(shù)
CEngine 構造函數(shù)
CCar 構造函數(shù)
CCar 析構函數(shù)
CEngine 析構函數(shù)
CTyre 析構函數(shù)
封閉類的復制構造函數(shù)
當封閉類執(zhí)行復制構造函數(shù)時,成員對象也會執(zhí)行對應的復制構造函數(shù),參考下面的代碼例子:
輸出結果:
A 構造函數(shù)
A 復制構造函數(shù)
C++ this指針的理解和作用
C++ static靜態(tài)成員
小林coding
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!