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

why must use '*p=a', and use 'p=&a' does not work in constructor

本文关键字:不起作用 构造函数 为什么      更新时间:2023-10-16

我是新手。 想了解为什么"p=&a"不起作用

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

int main(void){
A B(11);
}

A(int a){p=new int; p=&a;}首先为指针p分配一个int,然后用临时a的地址丢弃该指针值。

所以你最终会得到一个悬空的指针和一个内存泄漏!析构函数的行为将是未定义的

*p = a很好,因为您正在取消引用p.尽管如此,使用裸指针作为类成员会导致复制对象实例时出现问题。最好避免。

相关文章: