對象成員

若是一個類的數據成員中含有其餘類的對象,那麼就將這個數據成員稱爲是對象成員。函數

 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對象,構造函數

這個實際上是很好理解的,也很合符常理。數據

相關文章
相關標籤/搜索