我知道这确实很基础,但鉴于我对 C++ 的使用非常有限,我不知道答案。
有人告诉我,只要类包含指针作为成员,我就应该为其分配内存。 (然后在析构函数中使用“delete”来释放空间)
class Person{
public:
string* ptr_name;
Person(string& name){
ptr_name = new string(name);
}
...
}
我在想我是否可以这样做
class Person{
public:
string* ptr_name;
Person(string name){
ptr_name = &name;
}
...
}
由于我没有在构造函数参数中使用“&”,因此“名称”是按构造函数中的值复制的。所以内存已经分配给它了。显式析构函数将是不必要的,因为指针将在堆栈上自动销毁。
这行得通吗?
最佳答案
调用此构造函数后
Person(string name){
ptr_name = &name;
}
指针ptr_name
将无效,因为局部变量name
将被销毁。
因此取消引用此类指针将导致未定义的行为。
关于C++ 指针成员初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70506714/