2012-06-20 34 views
1

尋找一些意見,因爲它不清楚在閱讀C + + 11文檔。unique_ptr應該用於類成員指針嗎?

+5

它絕對可以,但是否使用這個或另一個選擇取決於。它所控制的指針的所有權語義是什麼? –

+2

如果要回答這個問題,需要更多的細節。你想知道它是否可能*?也就是說,如果使'unique_ptr'成員導致一些問題?或者你問這是否是一個好主意?如果是這樣,在什麼情況下? –

回答

1

絕對。這照顧了你的rule of three

+0

有一個'unique_ptr'數據成員意味着你自動獲得一個正確的默認析構函數,但是默認的複製構造和複製分配變得不可能。 – jogojapan

+1

@jogojapan:那麼,你可以免費移動建築並移動任務,所以你不會空手而歸。 ; - ] – ildjarn

+1

@Nikolai:只有在頭中定義了'unique_ptr'的有效載荷類時。大多數情況下,您使用句柄/ pimpl指針的習慣用法是爲了避免必須發佈私有類。在這種情況下,你仍然可以使用'unique_ptr',但是你需要實現默認和複製構造以及線外銷燬,並且複製分配(可能使用copy-swap技巧內聯)。當然,只有'shared_ptr'真正處理三條規則(C++ 11中的五規則),因爲在刪除器上執行了類型擦除,但是具有不同的語義。 –