若是一个类的数据成员中含有其余类的对象,那么就将这个数据成员称为是对象成员。函数
1 class Coordinate { // 坐标类 2 public: 3 Coordinate(int x, int y); // 带参数构造函数 4 ~Coordinate(void); // 析构函数 5 6 void SetX(int x); 7 void SetY(int y); 8 int GetX(void); 9 int GetY(void); 10 private: 11 int m_iX; 12 int m_iY; 13 }; 14 15 class Line { // 线段类 16 public: 17 Line(int x1, int y1, int x2, int y2); 18 ~Line(void); 19 20 void SetCoorA(int x, int y); 21 void SetCoorB(int x, int y); 22 void PrintInfo(void); 23 private: 24 Coordinate m_coorA; 25 Coordinate m_coorB; 26 };
在上面定义的两个类中,线段类Line中的数据成员含有坐标类Coordinate的对象m_coorA、spa
m_coorB,那么m_coorA和m_coorB就被称为对象成员。code
那么问题来了,当咱们实例化一个Line对象的时候,先实例化Line对象仍是内部包含的Coordinate对象呢?对象
答案就是: 实例化Line对象的时候先实例化内部包含的Coordinate对象(至因而先m_coorA仍是m_coorBblog
被实例化关键看初始化列表中的顺序),也就是先执行Coordinate类的构造函数;相反,当销毁一个Lineclass
对象的时候,是先销毁Line对象(也就是先执行Line类的析构函数),再销毁内部包含的Coordinate对象,构造函数
这个实际上是很好理解的,也很合符常理。数据