成员对象: 一个类的成员变量是另一个类的对象
包含 成员对象 的类叫 封闭类 (Enclosing)
class CTyre { //轮胎类
private:
int radius; //半径
int width; //宽度
public:
//构造函数
CTyre(int r, int w):radius(r), width(w) { }
};
class CEngine { //引擎类
};
class CCar { //汽车类
private:
int price; //价格
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){};
建议使用的初始化列表↑
定义封闭类的构造函数时, 添加初始化列表:
类名::构造函数(参数表):成员变量1(参数表), 成员变量2(参数表), …
{
…
}
当封闭类对象生成时,
• S1: 执行所有成员对象 的构造函数
• S2: 执行 封闭类 的构造函数
成员对象的构造函数调用顺序
和成员对象在类中的说明顺序一致
与在成员初始化列表中出现的顺序无关
当封闭类的对象消亡时
• S1: 先执行封闭类的析构函数
• S2: 执行成员对象的析构函数
析构函数顺序和构造函数的调用顺序相反