對象數組是什么
數組對象就是大批量實例化對象的一種方法,以往我們都是這樣:Student stu 實例化對象,如果有好幾百個對象應該怎么辦?這時候就用到了對象數組,顧名思義,就是吧所有要實例化的對象都放到一個組里面,然后直接實例化這個組,就像這樣:Student stu[100] 這樣一次性實例化100個對象。stu[1] 這就是對象數組里面的一個對象,stu[1].m_iX = 10 這就是給對象的屬性進行定義。
訪問數組中成員的方式
代碼示例:
int main() { Student stu[3]; // 通過棧的方式實例化對象數組 stu[1].m_iX = 10; // 給對象數組里面的第二個對象賦值 Student *p = new Student[3]; // 通過堆的方式實例化對象數組 p[0].m_iY = 20; // 給數組對象里面的一個對象p[0]添加屬性 m_iY p->m_iY = 20; delete []p; p = NULL; system("pause"); }
代碼演示:
注釋非常詳細,看代碼吧
#include<iostream> #include<stdlib.h> #include"Coordinate.h" using namespace std; /******************************************************** 對象數組 要求: 定義Coordinate類 數據成員:m_iX和m_iY 分別從棧和堆中實例化長度為3的對象數組 給數組各元素賦值 遍歷兩個數組 *********************************************************/ class Coordinate { public: Coordinate(); ~Coordinate(); public: int m_iX; // 橫坐標 int m_iY; // 縱坐標 }; Coordinate::Coordinate() { cout<<"構造函數"<<endl; } Coordinate::~Coordinate() { cout<<"析構函數"<<endl; } int main(void) { // 從棧上實例化對象數組 Coordinate coor[3]; coor[0].m_iX = 3; // 位對象數組中的第一個對象的屬性初始化 coor[0].m_iY = 5; // 從堆中實例化對象數組 Coordinate *p = new Coordinate[3]; p->m_iX = 7; // 通過指針的方式訪問對象數組中的第一個對象 p[0].m_iY = 9; // 通過索引的方式訪問對象數組中的第一個對象 p++; //p = p+1, p += 1 指針位置往前移一個位置 p->m_iX = 11; // 此時訪問的是第二個對象 p[0].m_iY = 13; // 因為p往前移動了一個元素,所以現在的p[0]是第二個元素 p[1].m_iX = 15; // 因為p往前移動了一個元素,所以現在的p[1]是第三個元素 p++; // p指針再往前移動一個位置,到達第二個位置 p->m_iY = 17; // 遍歷第一個數組 int i,j; for(i=0;i<3;i++) { cout<<"橫坐標:"<<coor[i].m_iX<<endl; cout<<"縱坐標:"<<coor[i].m_iY<<endl; } // 遍歷第一個數組 for(j=0;j<3;j++) { cout<<"p_x "<<p->m_iX<<endl; cout<<"p_y "<<p->m_iY<<endl; p--; // 因為通過兩次p++,此時p的位置已經是在對象數組的最后一個,所以要用p--,反方向遍歷 } // 釋放內存 // 因為上面p-- 執行了3次所以此時p的位置並不在對象數組的第一位,而在其前一位, // 所以要將p往前移動一位,再去釋放內存。 p++; delete []p;
p = NULL; system("pause"); return 0; }
運行結果: