weak_ptr是一種不控制所指向物件生存期的智慧型指標,它指向乙個由shared_ptr管理的物件。將乙個weak_ptr繫結到乙個shared_ptr不會改變shared_ptr的引用計數。並且一旦最後乙個shared_ptr被銷毀,其所指向的物件就會被釋放,就算此時仍有weak_ptr指向該物件,也會被釋放。
由於物件可能不存在,我們不能用weak_ptr直接訪問物件,而必須呼叫lock。這個函式檢查weak_ptr指向的物件是否仍存在。例如:
if (shared_ptrnp = np.lock())
常用操作
用法說明
weak_ptr< t > w
可以指向型別為t的物件的空week_ptr
weak_ptr< t > w(sp)
與shared_ptr sp指向相同物件的weak_ptr。t必須能轉換為sp指向的型別
w = p
p可以是乙個shared_ptr或乙個weak_ptr。賦值後w與p共享物件
w.reset()
將w置空
w.use_count()
與w共享物件的shared_ptr的數量
w.expired()
如果w.use_count()為0則返回true,否則返回false
w.lock()
如果w.expired()為true,返回乙個空shared_ptr,否則返回其繫結的shared_ptr
智慧型指標weak ptr
智慧型指標weak ptr主要用來協助shared ptr。不參與引用計數,但是有以下好處 1 打破遞迴的依賴關係 2 使用乙個共享的資源但是不要所有權,不新增引用計數 3 避免懸空指標。使用方法有二 方法一 boost shared ptrsp new std string method1 從sh...
智慧型指標 weak ptr
weak ptr是為了配合shared ptr而引入的一種智慧型指標,它更像是shared ptr的乙個助手而不是智慧型指標,因為它不具有普通指標的行為,沒有過載operator 和 它的最大作用在於協助shared ptr工作,像旁觀者那樣觀測資源的使用情況.用法 weak ptr被設計為與sha...
智慧型指標 weak ptr
weak ptr weak ptr是為了配合shared ptr而引入的一種智慧型指標,它更像是shared ptr的乙個助手而不是智慧型指標,因為它不具有普通指標的行為,沒有過載operator 和 它的最大作用在於協助shared ptr工作,像旁觀者那樣觀測資源的使用情況.用法 weak pt...