资源描述:
《c++对象数组的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、对象数组1.对象数组:在ANSIC中,把具有相同结构类型的结构变量,有序地集合起来便组成了结构数组.在ANSIC++中,与此类似将具有相同class类型的对象有序地集合在一起便组成了对象数组,对于一维对象数组也称为"对象向量",因此对象数组的每个元素都是同种class类型的对象.(1)对象数组的定义:其定义格式为:对象数组名[元素个数]...[={初始化列表}];其中是对象数组元素的存储类型,与变量一样有extern型,static型和auto型等,该对象数组元素由指明所属类,与普通数组类似,方括号内给出
2、某一维的元素个数.对象向量只有一个方括号,二维对象数组有两个方括号,如此类推.#includeclassPoint{intx,y;public:Point(void){x=y=0;}Point(intxi,intyi){x=xi;y=yi;}Point(intc){x=y=c;}voidPrint(){staticinti=0;cout<<"P"<
3、),Point(10,0)};intk=0;cout<<"输出显示第"<<++k<<"个三角形的三顶点:";for(inti=0;i<3;i++)Triangle[i].Print();Triangle[0]=Point(1);Triangle[1]=6;//CallPoint(6)Triangle[2]=Point(11,1);cout<<"输出显示第"<<++k<<"个三角形的三顶点:";for(i=0;i<3;i++)Triangle[i].Print();PointRectangle[2]
4、[2]={Point(0,0),Point(0,6),Point(16,6),Point(16,0)};cout<<"输出显示一个矩形的四顶点:";for(i=0;i<2;i++)for(intj=0;j<2;j++)Rectangle[i][j].Print();cout<<"输出显示45度直线上的三点:";PointLine45[3]={0,1,2};for(i=0;i<3;i++)Line45[i].Print();PointPtArray[3];cout<<"输出显示对象向量PtArray
5、的三元素:";for(i=0;i<3;i++)PtArray[i].Print();}该程序的输出结果:输出显示第1个三角形的三顶点:P0(0,0)P1(5,5)P2(10,0)输出显示第2个三角形的三顶点:P3(1,1)P4(6,6)P5(11,1)输出显示一个矩形的四顶点:P6(0,0)P7(0,6)P8(16,6)P9(16,0)输出显示45度直线上的三点:P10(0,0)P11(1,1)P12(2,2)输出显示对象向量PtArray的三元素:P13(0,0)P14(0,0)P15(0,0)(2
6、)对象数组的初始化①当对象数组所属类含有带参数的构造函数时,可用初始化列表按顺序调用构造函数初始化对象数组的每个元素.如上例中:PointTriangle[3]={Point(0,0),Point(5,5),Point(10,0)};PointRectangle[2][2]={Point(0,0),Point(0,6),Point(16,6),Point(16,0)};也可以先定义后给每个元素赋值,其赋值格式为:对象数组名[行下标][列下标]=构造函数名(实参表);例如:Rectangle[0][0]=P
7、oint(0,0);Rectangle[0][1]=Point(0,6);Rectangle[1][0]=Point(16,6);Rectangle[1][1]=Point(16,0);若对象数组所属类含有单个参数的构造函数时;②如上例中"Point(intc);",该构造函数置x和y为相同的值.那么对象数组的初始化可简写为:PointLine45[3]={0,1,2};PointTriangle[3]={0,//CallPoint(0)5,//CallPoint(5)Point(10,0)};③对象数组
8、创建时若没有初始化列表,其所属类中必须定义无参数的构造函数,在创建对象数组的每个元素时自动调用它.如上例中在执行"PointPtArray[3];"语句时,调用Point(void),初始化对象数组PtArray[]的每个对象为(0,0).④如果对象数组所属类含有析构函数,那末每当建立对象数组时,按每个元素的排列顺序调用构造函数,每当撤消数组时,按相反的顺序调用析构函数.#include#includeclassPersona