我知道這真的很基礎,但鑒于我對 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;
}
...
}
由于我沒有在建構式引數中使用 '&',所以在建構式中按值復制了 'name'。所以記憶體已經分配給它了。不需要顯式解構式,因為指標會在堆疊上自動銷毀。
這行得通嗎?
uj5u.com熱心網友回復:
呼叫此建構式后
Person(string name){
ptr_name = &name;
}
指標ptr_name將無效,因為區域變數name將被銷毀。
因此,取消參考這樣的指標將導致未定義的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/395871.html
