对象数组是什么

对象数组是什么

对象数组是什么

数组对象就是大批量实例化对象的一种方法,以往我们都是这样: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

#include

#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<<"构造函数"<

}

Coordinate::~Coordinate()

{

cout<<"析构函数"<

}

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<<"横坐标:"<

cout<<"纵坐标:"<

}

// 遍历第一个数组

for(j=0;j<3;j++)

{

cout<<"p_x "<m_iX<

cout<<"p_y "<m_iY<

p--; // 因为通过两次p++,此时p的位置已经是在对象数组的最后一个,所以要用p--,反方向遍历

}

// 释放内存

// 因为上面p-- 执行了3次所以此时p的位置并不在对象数组的第一位,而在其前一位,

// 所以要将p往前移动一位,再去释放内存。

p++;

delete []p; p = NULL;

system("pause");

return 0;

}

运行结果:

相关推荐

嗜血幡完全测试
365bet国内

嗜血幡完全测试

⌛ 06-30 👁️ 3684
怎样把手机里的照片传到淘宝空间 手机怎样设置允许淘宝使用相册或照相功能?
重装系统时后缀esd的文件怎么安装?详细步骤教你轻松搞定