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

正在回答

3 回答

# include <iostream>

using namespace std;


class Coordinate

{

public:

    Coordinate(){cout << "Coordinate()" << endl;}

    ~Coordinate(){cout << "~Coordinate()" << endl;}

    int m_iX;

    int m_iY;

};


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_x = " << p -> m_iX << endl;

cout << "p_y = " << p -> m_iY << endl;

p--;

}


p++;

delete []p;

p = NULL;


return 0;

}


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

再吃一个苹果_

为啥我的析构函运行了6次
2016-09-24 回复 有任何疑惑可以回复我~
#2

面具VS口罩 回复 再吃一个苹果_

加一个system("pause");就会显示3次
2017-03-22 回复 有任何疑惑可以回复我~

你是不是编译器不一样,codeblock和VC6.0执行结束后会自动暂停,而老师用的是VC2010不会自动暂停,所以在return 0前面加了个system(“pause”)来实现程序暂停,但老师在暂停后显示的析构函数是从栈中执行手动释放的对象数组的析构函数,还有从堆中申请对象数组需要在暂停结束后的return 0处被自动销毁,而老师的编译器无法显示出来。

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

把完整的代码列出来,发帖时注意用格式化工具

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

举报

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

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

进入课程

析构数量不对啊

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