成員物件和封閉類:
乙個類的成員變數如果是另乙個類,就稱之為成員物件。包含成員物件的類叫做封閉類。
當封閉類的物件產生並初始化時,它包含的成員物件也需要被初始化,這時就會引發對成員物件
建構函式的呼叫。如何讓編譯器知道到底是使用哪個建構函式初始化的呢?這可以通過在定義封
閉類的建構函式時,新增初始化列表的方式解決。
在建構函式中新增初始化列表的寫法如下:
類名::建構函式名(引數名):成員變數1(參數列),成員變數2(參數列),......
初始化列表中的成員變數既可以是成員物件,也可以是基本型別的成員變數。對於成員物件,
引數列表中的引數就是其建構函式的引數,對於基本型別成員變數,參數列中就是乙個初始
值。
usingnamespace
std;
class
ctyre
};class
cengine;
class ccar;
ccar::ccar(
int p, int tr, int
tw):price(p), tyre(tr, tw)
intmain()
封閉類物件生成時,先執行所有成員物件的建構函式,然後才執行封閉類自己的建構函式。
當封閉類物件消亡時,先執行封閉類的析構函式,然後再執行成員物件的析構函式。
封閉類的物件,如果是使用預設複製建構函式初始化的那麼它包含的成員物件也會用複製建構函式初始化
#include usingnamespace
std;
class
ctyre
~ctyre()
};class
cengine
~cengine()
};class
ccar
~ccar()
};int
main()
/*輸出結果:
cengine constructor
ctyre constructor
ccar constructor
ccar destructor
ctyre destructor
cengine destructor
*/
成員物件和封閉類
成員物件 乙個類的成員變數是另乙個類的物件 包含成員物件的類叫封閉類 enclosing class ctyre 初試化列表 class cengine class ccar ccar ccar int p,int tr,int w price p tyre tr,w int main 如果ccar...
C 成員物件和封閉類
有其他類的物件作為 成員物件的類叫封閉類。任何生成封閉類物件的語句,都要讓編譯器明白,物件中的成員物件,是如何初始化的。具體做法是通過封閉類的建構函式的初始化列表。封閉類物件生成時,先執行所有物件成員的建構函式,然後才執行封閉類的建構函式。物件成員的構造函式呼叫次序和物件成員在類中的說明次序一致,與...
三 類與物件提高 成員物件和封閉類
乙個類的成員是其他類的物件,就把這樣的成員成為成員物件 有成員物件的類叫 封閉 enclosing 類 class ctyre 輪胎類 後初始化列表,可以對成員進行初始化 class cengine 引擎類 class ccar 汽車類 封閉類 ccar ccar int p,int tr,int ...