为什么必须使用'*p = a',并使用'p =&a'在构造函数中不起作用

use*_*779 -2 c++ visual-c++

我是新手.喜欢理解为什么"p =&a"不起作用.谢谢.

  class A{
      int *p;
  public:
      A(int a){p=new int; p=&a;}
      ~A(){delete p;}
  };


  int main(void){
      A B(11);
  }
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 5

A(int a){p=new int; p=&a;}首先为int指针分配一个p,然后用指向临时 地址的指针值来删除指针值a.

所以,你最终有一个悬空指针 一个内存泄漏!析构函数的行为将是不确定的.

*p = a很好,因为你正在取消引用 p.虽然如此说,使用裸指针作为类成员会导致复制对象实例的问题.最好避免.