若是一個類的數據成員中含有其餘類的對象,那麼就將這個數據成員稱爲是對象成員。函數
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對象,構造函數
這個實際上是很好理解的,也很合符常理。數據