注册 登录
编程论坛 C++教室

关于指针delete的问题

RL720 发布于 2007-11-12 22:54, 508 次点击

#include <stdlib.h>
#include <iostream>

using namespace std;

class A
{
public:
    int* p;
    A()
    {   
        p= new int;
        *p = 1;
        cout<<\"构造\"<<endl;
    }

    ~A()
    {
        delete p;   
        *p = 5;
        cout<<\"析构\"<<endl;
    }

    void fun()
    {
        ++(*p);
        cout<<p<<'\t'<<*p<<endl;
    }      
};
  
int main(int argc, char *argv[])
{
  A a;
  if(true){
      A b(a);
      b.fun();
  }
  a.fun();
   
  system(\"PAUSE\");   
  return 0;
}

按理说 默认拷贝构造函数使a.p和b.p这两个指针指向相同的地址 在b被析构的时候已经将这个空间释放掉了 为什么还能被赋值和调用?
1 回复
#2
duccdd2007-11-12 23:22
这就是为什么释放空间后应该将指针赋空值
1