unique ptr的相關使用

2021-09-13 13:59:44 字數 811 閱讀 1919

unique_ptr由c++11中引入,用於替代不安全的auto_ptr

unique_ptr是一種定義在< memory >中的只能指標

它持有對物件的獨有權

這意味著,記憶體資源所有權可以轉移到另外乙個unique_ptr,並且原始的unique_ptr不再擁有次資源

實際使用中,建議將物件限制為由乙個所有者所有,因為多個所有權會使程式邏輯變得複雜。因此,當需要智慧型指標用於純 c++ 物件時,可使用 unique_ptr,而當構造 unique_ptr 時,可使用 make_unique helper 函式。

unique_ptr與原始指標一樣有效,並可用於 stl 容器。將 unique_ptr 例項新增到 stl 容器執行效率很高,因為通過 unique_ptr 的移動建構函式,不再需要進行複製操作。

unique_ptr指標與其所指物件的關係:

#include

#include

intmain()

//超過uptr的作用域,記憶體釋放

}

unique_ptr指標本身的生命週期:從unique_ptr指標建立時開始,直到離開作用域。離開作用域時,若其指向物件,則將其所指物件銷毀(預設使用delete操作符,使用者可指定其他操作)。unique_ptr指標與其所指物件的關係:在智慧型指標生命週期內,可以改變智慧型指標所指物件,如建立智慧型指標時通過建構函式指定、通過reset方法重新指定、通過release方法釋放所有權、通過移動語義轉移所有權。

unique ptr使用總結

includestd unique ptrpname auto pname std make unique hello c 14 support make unique可以用乙個unique ptr初始化另外乙個unique ptr嗎?不可以,但是可以進行所有權轉移 vector可以裝unique ...

unique ptr的使用和陷阱

與shared ptr不同,unique ptr沒有定義類似make shared的操作,因此只可以使用new來分配記憶體,並且由於unique ptr不可拷貝和賦值,初始化unique ptr必須使用直接初始化的方式。unique ptr up1 new int okay,直接初始化 unique...

unique ptr的使用和陷阱

與shared ptr不同,unique ptr沒有定義類似make shared的操作,因此只可以使用new來分配記憶體,並且由於unique ptr不可拷貝和賦值,初始化unique ptr必須使用直接初始化的方式。unique ptrup1 new int okay,直接初始化 unique ...