成員對象: 一個(gè)類的成員變量是另一個(gè)類的對象
包含 成員對象 的類叫 封閉類 (Enclosing)
class CTyre { //輪胎類
private:
int radius; //半徑
int width; //寬度
public:
//構(gòu)造函數(shù)
CTyre(int r, int w):radius(r), width(w) { }
};
class CEngine { //引擎類
};
class CCar { //汽車類
private:
int price; //價(jià)格
CTyre tyre
;
CEngine engine;
public:
CCar
(int p, int tr, int tw);
};
CCar::CCar (int p, int tr, int w):price(p), tyre(tr, w){};
int main(){
CCar car(20000,17,225);
return 0;
}
CCar::CCar (int p, int tr, int w):price(p), tyre(tr, w){};
建議使用的初始化列表↑
定義封閉類的構(gòu)造函數(shù)時(shí), 添加初始化列表:
類名::構(gòu)造函數(shù)(參數(shù)表):成員變量1(參數(shù)表), 成員變量2(參數(shù)表), …
{
…
}
當(dāng)封閉類對象生成時(shí),
? S1: 執(zhí)行所有成員對象 的構(gòu)造函數(shù)
? S2: 執(zhí)行 封閉類 的構(gòu)造函數(shù)
成員對象的構(gòu)造函數(shù)調(diào)用順序
和成員對象在類中的說明順序一致
與在成員初始化列表中出現(xiàn)的順序無關(guān)
當(dāng)封閉類的對象消亡時(shí)
? S1: 先執(zhí)行封閉類的析構(gòu)函數(shù)
? S2: 執(zhí)行成員對象的析構(gòu)函數(shù)
析構(gòu)函數(shù)順序和構(gòu)造函數(shù)的調(diào)用順序相反