为了账号安全,请及时绑定邮箱和手机立即绑定

我为什么delete完了出现了6次析构函数的调用,请问我哪里错了?

Coordinate

Coordinate

Coordinate

Coordinate

Coordinate

Coordinate

coor_x3

coor_Y5

coor_x4198173

coor_Y0

coor_x0

coor_Y0

15

17

11

13

7

9

~Coordinate

~Coordinate

~Coordinate

sh: 1: pause: not found

~Coordinate

~Coordinate


正在回答

5 回答

你把// system("pause"); 中//注释去掉


0 回复 有任何疑惑可以回复我~


demo.cpp


#include <iostream>

#include <stdlib.h>

#include "Coordinate.h"

using namespace std;


/*

对象数组

要求:

定义Coordinate类

数据成员:m_iX和m_iY

分别从栈和堆中实例化长度为3的对象数组

给数组中的元素分别赋值

遍历两个数组

*/


int main()

{

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->m_iX = 11;

p[0].m_iY=13;


p[1].m_iX=15;

p++;

p->m_iY = 17;

for(int i=0; i<3; i++)

{

cout << "coor_x" << coor[i].m_iX << endl;

cout << "coor_Y" << coor[i].m_iY << endl;

}

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

{

cout << p->m_iX << endl;

cout << p->m_iY << endl;

p--;

}


p++;//此时的p需要++,指向数组的第一个元素

delete []p;//

p=NULL;


// system("pause");

return 0;

}


Coornadite.h

class Coordinate

{

public:

Coordinate();

~Coordinate();

public:

int m_iX;

int m_iY;

};




Coordinate.cpp

#include <iostream>

#include "Coordinate.h"

using namespace std;


Coordinate::Coordinate()

{

cout << "Coordinate" << endl;

}


Coordinate::~Coordinate()

{

cout << "~Coordinate" << endl;

}


0 回复 有任何疑惑可以回复我~

栈的空间在你按下任意键之后释放,  代码贴出来看看

0 回复 有任何疑惑可以回复我~
#1

qq_夜苓瑜_03894440 提问者

代码在底下你看看
2017-08-16 回复 有任何疑惑可以回复我~
#2

慕粉2134498320

应该是你coordinate的析构函数里 写了delete 把coordinate的析构函数去了 就应该只有三个了
2017-08-17 回复 有任何疑惑可以回复我~
#3

慕慕1553691 回复 慕粉2134498320

我也是这个问题,请问你是什么意思,我看析构函数里没写delete
2017-09-29 回复 有任何疑惑可以回复我~

一个是定义在栈上面的三个,也需要释放空间?   delete不是只释放new的空间么?

0 回复 有任何疑惑可以回复我~

你定义了6个元素的Coordinate对象数组。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

我为什么delete完了出现了6次析构函数的调用,请问我哪里错了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信