成员对象和封闭类

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容