程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 智能指針unique_ptr的用法,智能指針unique_ptr

智能指針unique_ptr的用法,智能指針unique_ptr

編輯:C++入門知識

智能指針unique_ptr的用法,智能指針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,注意不要引起循環引用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved