delete []p:加上[]能销毁所有的元素,如果不加只销毁第一个元素其实就是调用了p中的析构函数Coornidate.h
#include<string>using namespace std;class Coornidate{public: Coornidate(); ~Coornidate(); int m_iX; int m_iY;};Coornidate.cpp#include<iostream>#include"coordinate.h"using namespace std;/** * 对象数组 要求: 定义Coordinate类 数据成员:m_iX和m_iY 分别从栈和堆中实例化长度为3的对象数组 给数组中的元素分别赋值遍历两个数组 */ Coornidate::Coornidate() { cout<<"Coornidate()"<<endl; } Coornidate::~Coornidate() { cout<<"~Coornidate()"<<endl; }int main(void){ Coornidate coor[3]; coor[0].m_iX=1; coor[0].m_iY=3; Coornidate *p=new Coornidate[3]; p->m_iX=1; p[0].m_iY=3; p++; p->m_iX=5; p[0].m_iY=7; p[1].m_iX=9; p++; p->m_iY=11; for(int i=0;i<3;i++) { cout<<"coor"<<"("<<coor[i].m_iX<<","<<coor[i].m_iY<<")"<<endl; } for(int i=0;i<3;i++) { cout<<"p"<<"("<<p->m_iX<<","<<p->m_iY<<")"<<endl; p--; } p++; delete []p; p=NULL; return 0;}Coornidate()Coornidate()Coornidate()Coornidate()Coornidate()Coornidate()coor(1,3)coor(2752192,2752248)coor(2752460,2006045136)p(9,11)p(5,7)p(1,3)~Coornidate()~Coornidate()~Coornidate()~Coornidate()~Coornidate()~Coornidate()
新闻热点
疑难解答
图片精选