对象成员
Posted 邓涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象成员相关的知识,希望对你有一定的参考价值。
如果一个类的数据成员中含有其他类的对象,那么就将这个数据成员称为是对象成员。
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、
m_coorB,那么m_coorA和m_coorB就被称为对象成员。
那么问题来了,当我们实例化一个Line对象的时候,先实例化Line对象还是内部包含的Coordinate对象呢?
答案就是: 实例化Line对象的时候先实例化内部包含的Coordinate对象(至于是先m_coorA还是m_coorB
被实例化关键看初始化列表中的顺序),也就是先执行Coordinate类的构造函数;相反,当销毁一个Line
对象的时候,是先销毁Line对象(也就是先执行Line类的析构函数),再销毁内部包含的Coordinate对象,
这个其实是很好理解的,也很合符常理。
以上是关于对象成员的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象