智能指針unique_ptr的用法


  unique_ptr是獨占型的智能指針,它不允許其他的智能指針共享其內部的指針,不允許通過賦值將一個unique_ptr賦值給另一個unique_ptr,如下面錯誤用法:

    std::unique_ptr<T> myPtr(new T);
    std::unique_ptr<T> myOtherPtr = myPtr; // error

  但是unique_ptr允許通過函數返回給其他的unique_ptr,還可以通過std::move來轉移到其他的unique_ptr,注意,這時它本身就不再擁有原來指針的所有權了。相比於auto_ptr而言,unique_ptr是顯示的轉移,而不是莫名其妙的報廢,因為auto_ptr調用拷貝構造函數后,原來的對象就失效了。

    std::unique_ptr<T> myPtr(new T);
    std::unique_ptr<T> myOtherPtr = std::move(myPtr); // ok

  對於一般的程序使用std::unique_ptr就夠了,如果是多線程方面,可能存在共同使用的問題,可以使用std::shared_ptr,注意不要引起循環引用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM