成员对象和封闭类

成员对象: 一个类的成员变量是另一个类的对象
包含 成员对象 的类叫 封闭类 (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: 执行成员对象的析构函数

析构函数顺序和构造函数的调用顺序相反

你可能感兴趣的:(成员对象和封闭类)