[英]Transferring ownership to function with std::unique_ptr
我正在嘗試學習如何使用智能指針並了解所有權。 當我通過值將auto_ptr
傳遞給函數時,該函數將獲取該指針的獨占所有權。 因此,當函數完成時,它會刪除我傳遞給它的指針。
但是,當我嘗試使用unique_ptr
執行此操作時出現編譯錯誤,就像對unique_ptr
禁用了復制分配一樣。 通過引用傳遞unique_ptr
似乎不會轉移所有權,它只是為函數提供對unique_ptr
的引用。
如何通過將所有權傳遞給函數來使用unique_ptr
來獲取auto_ptr
的行為? 我希望鏈接到unique_ptr
的詳細教程,因為到目前為止,我讀過的內容似乎只是討論auto_ptr
或者談論Boost可用的智能指針,並且似乎忽略了unique_ptr
因為shared_ptr
涵蓋了它。
但是,當我嘗試使用unique_ptr執行此操作時出現編譯錯誤,就像對unique_ptrs禁用了復制分配一樣。
它是。 unique_ptr
只有一個擁有者。 它無法復制,因為這會導致兩個所有者。 為了將值傳遞給另一個函數,原始所有者必須使用std::move
放棄所有權。
要使用unique_ptr
,您必須了解移動語義 。
auto_ptr
只是對真實移動語義的一種hacky近似,實際上並不起作用。 最好忘記這個曾經存在過的課程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.