簡體   English   中英

使用std :: unique_ptr將所有權轉移到函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM