請問delete
荷蘭國際集團的指針結構foo
:刪除和指向數據的節點?
struct foo
{
bar * baz;
};
指着結構baz
:
struct baz
{
int arr;
};
而且delete
/釋放內存通過baz
指向?
請問delete
荷蘭國際集團的指針結構foo
:刪除和指向數據的節點?
struct foo
{
bar * baz;
};
指着結構baz
:
struct baz
{
int arr;
};
而且delete
/釋放內存通過baz
指向?
編號刪除不以這種方式「級聯」。
但是,如果你有一個析構函數爲foo
,那麼你可以在該析構函數中使用delete baz
。
不需要在刪除foo的實例之前,您需要手動刪除baz。大多數典型的開發人員將擁有foo delete baz的析構函數。
struct foo
{
bar * baz;
~foo()
{
delete baz;
}
};
或更好的是,如果'baz'在構造函數中創建並在析構函數中被刪除,它可能不應該單獨分配。 (否則,請使用智能指針。) –
K,謝謝。我有幾張表指向相同的數據,所以我想確保解構一張表不會影響實際數據。 – Flexo1515
除了析構函數之外,還應遵循三/五規則並實現複製/移動構造函數和賦值運算符。 – chris
還沒有了解複製構造函數。它適用於DS課程,所以我們不會太過於熟悉語言本身。 – Flexo1515
如果確實如此,那將是一場災難。如果其他東西是*使用struct'baz'? –