我的顺序输出栈中元素为什么会调用9次析构函数?
#include <iostream>
#include <stdlib.h>
#include "Coordinate.h"
#include<string>
using namespace std;
/****************************************************
对象数组
定义Coordinate类
数据成员m_iX,m_iY
分别从栈中和堆中实例化长度为3的对象数组
给数组中的元素分别赋值
遍历两个数组
****************************************************/
int main()
{
//栈中实例化
Coordinate coor[3];
coor[0].m_iX = 10;
coor[0].m_iY = 15;
//堆中实例化
Coordinate *p = new Coordinate[3];
p->m_iX = 3; //用指针来访问数组中第一个元素
p[0].m_iY = 5; //用索引方式访问数组中第一个元素
//用指针来访问第二个元素
p++; //指针增加1,p=p+1,此时p[0]是第二个元素
p->m_iX = 7;
p[0].m_iY = 9;
//用索引方式来访问第三个元素
p[1].m_iX = 11;
p++;
p->m_iY = 13;
//遍历栈中的数组元素
for(int i = 0;i<1;i++)
{
cout<<"coor_X"<<coor[i].m_iX<<endl;
cout<<"coor_Y"<<coor[i].m_iY<<endl;
}
p = p-3; //使指针指到第一个元素的前一位
//遍历堆中数组元素
for(int j = 0;j<3;j++)
{
p++; //使指针指到第一个元素,为避免遍历结束后指针指到申请的堆外
cout<<"p_X"<<p->m_iX<<endl;
cout<<"p_Y"<<p->m_iY<<endl;
}
delete []p;
p = NULL;
system("pause");
return 0;
}