C++对象数组
對(duì)象數(shù)組是什么
數(shù)組對(duì)象就是大批量實(shí)例化對(duì)象的一種方法,例如:Student stu 實(shí)例化對(duì)象,如果有好幾百個(gè)對(duì)象應(yīng)該怎么辦?這時(shí)候就用到了對(duì)象數(shù)組,顧名思義,就是吧所有要實(shí)例化的對(duì)象都放到一個(gè)組里面,然后直接實(shí)例化這個(gè)組,就像這樣:Student stu[100] 這樣一次性實(shí)例化100個(gè)對(duì)象。stu[1] 這就是對(duì)象數(shù)組里面的一個(gè)對(duì)象,stu[1].m_iX = 10 這就是給對(duì)象的屬性進(jìn)行定義。
訪問數(shù)組中成員的方式
示例:
完整代碼:
#include<iostream> #include<stdlib.h> #include"Coordinate.h" using namespace std;class Coordinate { public:Coordinate();~Coordinate(); public:int m_iX; // 橫坐標(biāo)int m_iY; // 縱坐標(biāo) };Coordinate::Coordinate() {cout<<"構(gòu)造函數(shù)"<<endl; } Coordinate::~Coordinate() {cout<<"析構(gòu)函數(shù)"<<endl; }int main(void) {// 從棧上實(shí)例化對(duì)象數(shù)組Coordinate coor[3]; coor[0].m_iX = 3; // 位對(duì)象數(shù)組中的第一個(gè)對(duì)象的屬性初始化coor[0].m_iY = 5;// 從堆中實(shí)例化對(duì)象數(shù)組Coordinate *p = new Coordinate[3];p->m_iX = 7; // 通過指針的方式訪問對(duì)象數(shù)組中的第一個(gè)對(duì)象p[0].m_iY = 9; // 通過索引的方式訪問對(duì)象數(shù)組中的第一個(gè)對(duì)象p++; //p = p+1, p += 1 指針位置往前移一個(gè)位置p->m_iX = 11; // 此時(shí)訪問的是第二個(gè)對(duì)象p[0].m_iY = 13; // 因?yàn)閜往前移動(dòng)了一個(gè)元素,所以現(xiàn)在的p[0]是第二個(gè)元素p[1].m_iX = 15; // 因?yàn)閜往前移動(dòng)了一個(gè)元素,所以現(xiàn)在的p[1]是第三個(gè)元素p++; // p指針再往前移動(dòng)一個(gè)位置,到達(dá)第二個(gè)位置p->m_iY = 17;// 遍歷第一個(gè)數(shù)組int i,j;for(i=0;i<3;i++){cout<<"橫坐標(biāo):"<<coor[i].m_iX<<endl;cout<<"縱坐標(biāo):"<<coor[i].m_iY<<endl;}// 遍歷第一個(gè)數(shù)組for(j=0;j<3;j++){cout<<"p_x "<<p->m_iX<<endl;cout<<"p_y "<<p->m_iY<<endl;p--; // 因?yàn)橥ㄟ^兩次p++,此時(shí)p的位置已經(jīng)是在對(duì)象數(shù)組的最后一個(gè),所以要用p--,反方向遍歷}// 釋放內(nèi)存// 因?yàn)樯厦鎝-- 執(zhí)行了3次所以此時(shí)p的位置并不在對(duì)象數(shù)組的第一位,而在其前一位,// 所以要將p往前移動(dòng)一位,再去釋放內(nèi)存。p++; delete []p;p = NULL;system("pause");return 0; }總結(jié)
- 上一篇: 命令行安装Pillow
- 下一篇: C++ const对象