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

来源:2-3 [C++]对象数组实践(二)

qq_夜苓瑜_03894440

2017-08-15 21:51

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回答

  • 不想取名字哟
    2017-08-21 11:16:33

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


  • qq_夜苓瑜_03894440
    2017-08-16 22:40:14


    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;

    }


  • 慕粉2134498320
    2017-08-16 14:29:26

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

    慕慕1553... 回复慕粉2134...

    我也是这个问题,请问你是什么意思,我看析构函数里没写delete

    2017-09-29 17:56:02

    共 3 条回复 >

  • qq_夜苓瑜_03894440
    2017-08-15 23:51:54

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

  • 天空上的太阳
    2017-08-15 23:45:07

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

C++远征之封装篇(下)

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

70915 学习 · 514 问题

查看课程