删除对象两次

时间:2015-04-24 05:43:53

标签: c++

我只是C ++的新手,我有一个关于删除main函数中的对象的问题,我的代码是

 class aClass
 {
 public:
   int data;
   aClass* pointer=NULL;

   aClass(int x): data(x) {
     cout << "calling int constructor\n";
   }

   ~aClass() {     
       cout <<"Index " <<(*this).data<<"  calling destructor\n";
   }
};

int main()
{
  aClass ob1(1);
  aClass* pointer=&ob1;
  delete pointer;

  return 0;
}

输出是:

calling int constructor
Index 1  calling destructor
Index 1  calling destructor

我只是不知道为什么ob1被删除两次因为删除了点已经指向的ob1,所以int函数应该找不到它并再次删除它?

1 个答案:

答案 0 :(得分:1)

第一次在第一次调用析构函数:

delete pointer;

第二次在函数返回之前自动销毁对象ob1

<强> PS

该代码受未定义行为的影响。仅当指针指向通过调用delete返回的内存时,才允许在指针上调用new