已采纳回答 / Allxiangzi3571672
把Coordinate*p=new Coordinate[1];改成Coordinate*p=new Coordinate[3];
2016-06-15
int main(void)
{
Coordinate*p=new Coordinate[1];
for (int i=0;i<2;i++)
{
p->SetXY(2*i+1,2*(i+1));
p++;
}
for(int i = 0; i < 2; i++)
{
p--;
p->printInfo();
}
p++;
delete[] p;
p=NULL;
system("pause");
return 0;
}
为什么我后面要p++才不报错,按理说我在上一个循环中p应该已经回到原来的地址了啊
{
Coordinate*p=new Coordinate[1];
for (int i=0;i<2;i++)
{
p->SetXY(2*i+1,2*(i+1));
p++;
}
for(int i = 0; i < 2; i++)
{
p--;
p->printInfo();
}
p++;
delete[] p;
p=NULL;
system("pause");
return 0;
}
为什么我后面要p++才不报错,按理说我在上一个循环中p应该已经回到原来的地址了啊
已采纳回答 / 我呵呵了
是的,因为你如果再次调用set方法改变m_iCount的值时,并没有再次执行new 进行内存的分配,如果你自己写程序的时候,在调用set后,如果再次进行内存的分配是可以改变m_pArr的大小的,当然这些都必须在拷贝构造函数中完成。
2016-06-10