[C++之旅] 14 對象成員與對象數組
對象數組
使用方式
-
從棧中實例化對象數組
類名 對象名[對象個數]; 對象名[需訪問的第幾個對象 - 1].成員/成員函數...
對象數組中有n個對象則實例化時調用n次構造函數
-
從堆中實例化對象數組
類名 *對象名 = new 類名[對象個數]; 對象名[需訪問的第幾個對象 - 1].成員/成員函數... 對象名->對象成員/成員函數... delete []對象名干花; 對象名 = NULL;
對象數組中有n個對象則實例化時調用n次構造函數楞黄,delete時調用n次析構函數池凄,采用指針的方式訪問成員時,即
類名 p = new 類名[n]
鬼廓,p->成員和p[0].成員肿仑,表示對象數組中第一個對象的成員,(p+1)->成員,表示對象數組中第二個對象的成員尤慰,以此類推馏锡,但如果執(zhí)行了p+=1(此時p已經改變,而p+1則不改變p的值)伟端;則p[0]指向的是對象數組的第二元素杯道。對象成員
即對象中包含有其他的對象
class Coordinate { public: Coordinate(int x, int y): m_x(x), m_y(y){} private: int m_x; int m_y; };
Coordinate表示點的類,其中包含點的xy坐標
class Line { public: Line(int x1, int y1, int x2, int y2): m_coorA(x1, y1), m_coorB(x2, y2){} private: Coordinate m_coorA; Coordinate m_coorB; };
Line表示線的類责蝠,包含兩個點的類党巾,即包含AB兩個坐標點
int main(void) { Line *p = new Line(1, 2, 4, 5); delete p; p = NUll; return 0; }
實例化對象時,先實例化m_coorA這個對象再實例化m_coorB這個對象霜医,再實例化p這個對象齿拂。銷毀時,先銷毀p再銷毀m_coorB再銷毀m_coorA支子。