对象成员

如果一个类的数据成员中含有其他类的对象,那么就将这个数据成员称为是对象成员。

 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对象,

这个其实是很好理解的,也很合符常理。

 

posted @ 2017-06-17 18:31  恍如隔世灬  阅读(748)  评论(0编辑  收藏  举报