我是新手.喜欢理解为什么"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)
A(int a){p=new int; p=&a;}首先为int指针分配一个p,然后用指向临时 地址的指针值来删除指针值a.
所以,你最终有一个悬空指针 和一个内存泄漏!析构函数的行为将是不确定的.
*p = a很好,因为你正在取消引用 p.虽然如此说,使用裸指针作为类成员会导致复制对象实例的问题.最好避免.