对象数组编码示例
#include <iostream>
#include <stdlib.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()" << endl;
}
Coordinate::~Coordinate(){
cout << "~Coordinate()" << endl;
}
int main(void)
{
Coordinate coord[3];//从栈中
while (true) {
coord[0].m_iX = 10;
coord[0].m_iY = 2;
for (int k = 1; k < 3; k++) {
coord[k].m_iX = coord[k-1].m_iX+10;
coord[k].m_iY = coord[k-1].m_iY+2;
}
break;
}
Coordinate*p = new Coordinate[3]; //从堆中
p[0].m_iX = 20;
p->m_iY = 9;
p++; //p+=1;
p[0].m_iX = 30;
p->m_iY = 9;
p[1].m_iX = 30;
p++;
p->m_iY = 9;
for (int i = 0; i < 3; i++) { //正常遍历
cout << "coord_x" << coord[i].m_iX << endl;
cout << "coord_y" << coord[i].m_iY << endl;
}
for (int j = 0; j < 3; j++) { //从后往前遍历
cout << "p_x" << p->m_iX << endl;
cout << "p_y" << p->m_iY << endl;
p--; //最后指向非法。。
}
p++; //指针指向第一个元素
delete[]p;
p=NULL;
system("pause");
return 0;
}
打印结果为: