C 弱智能指標weak ptr詳解

2021-09-29 01:32:58 字數 925 閱讀 6127

在最早有介紹關於智慧型指標的博文,但並未深入**弱智能指標的存在,這是簡單提到它是來配合強智慧型指標一起使用,且不可以單獨使用,所以對於弱智能指標它的作用就是解決強智慧型指標之間的相互引用而存在的。

那,本文主要介紹關於弱智能指標weak_ptr的一些東西;

關於

weak_ptr

weak_ptr是伴隨

shared_ptr而被引入的。

weak_ptr本身也是乙個模板類,但是不能直接用它來定義乙個智慧型指標的物件,只能配合shared_ptr來使用,可以將shared——ptr的物件賦值給weak_ptr,並且這樣並不會改變引用技數的值。他內部沒有過載operator*和->,它的最大作用就是協助shared_ptr,像旁觀者那樣觀測資源的使用情況:

具體用法:

注意:weak_ptr雖然是乙個模板類,但不能直接定義指向原始指標的物件;weak_ptr接受shared_ptr型別的變數賦值,但是反過來是不可以的,需要使用lock函式;weak_ptr它本身是存在引用計數的 ,因為它本身不會增加引用計數,所以它指向的物件可能在它用的時候已經被釋放了,所以在用之前需要使用expired函式來檢測是否過期,然後使用lock函式來獲取其對應的shared_ptr物件;weak_ptr中只有函式lock和expired兩個函式比較重要;

關於weak_ptr內部的幾個成員函式介紹:

了解這些之後,對於weak_ptr如何訪問物件:它會通過lock函式去獲取強智慧型指標的物件,在此之前會呼叫expired函式去檢測強智慧型指標物件是否存在;

在這裡提乙個點:關於c++的迴圈引用,主要體現在強智慧型指標這一塊,處理辦法就是我們的弱智能指標了。

C 弱智能指標(weak ptr)

弱智能指標 一般結合強智慧型指標使用,它指向乙個 shared ptr 管理的物件.進行該物件的記憶體管理的是強引用的 shared ptr.weak ptr只是提供了對管理物件的乙個訪問手段 weak ptr 設計的目的是為配合 shared ptr 而引入的一種智慧型指標來協助 shared p...

C 智慧型指標 weak ptr

weak ptr 是一種不控制物件生命週期的智慧型指標,它指向乙個 shared ptr 管理的物件.進行該物件的記憶體管理的是那個強引用的 shared ptr.weak ptr只是提供了對管理物件的乙個訪問手段.weak ptr 設計的目的是為配合 shared ptr 而引入的一種智慧型指標來...

智慧型指標weak ptr

智慧型指標weak ptr主要用來協助shared ptr。不參與引用計數,但是有以下好處 1 打破遞迴的依賴關係 2 使用乙個共享的資源但是不要所有權,不新增引用計數 3 避免懸空指標。使用方法有二 方法一 boost shared ptrsp new std string method1 從sh...