boost庫的weak ptr剖析

2021-07-22 10:45:16 字數 872 閱讀 8562

weak_ptr最大的特點就是他是乙個弱指標,他和shared_ptr的區別重點突出於「弱」,因為它是弱指標,所以它僅有幾個介面,僅能完成很少的工作,它可以從乙個shared_ptr或weak_ptr物件構造,獲得對資源的觀測權,它沒有共享資源,所以他物件的建立不會引起指標引用計數的增加,它物件的析構不會引起計數器的減少(這也是它能夠使得shared_ptr打破迴圈計數的重要依據)

(1)weak_ptr可以看作是shared_ptr的乙個輔助指標,它可以通過shared _ptr的建構函式或者是成員函式lock來實現向shared_ptr的轉換過程。

(2)當最後乙個shared_ptr指向的物件被釋放的時候,通過weak_ptr去獲取shared_ptr指向被刪除物件的行為會失敗,建構函式會丟擲乙個異常型別boost::bad_weak_ptr,然後weak_ptr::lock會返回乙個空的shared_ptr(weak_ptr的乙個重要用途是獲得this指標的shared_ptr,使物件能夠生產shared_ptr管理自己,呼叫的就是lock函式來幫助實現上述做法)、

(3)px代表資料型別,pn代表幾份拷貝

函式框架::由於weak_ptr針對的都是shared_ptr實現的,所以他的介面和函式以及面向範圍都要小的多,所以框架規模也就小很多

namespace boost ;

templatebool operator<(weak_ptrconst & a, weak_ptrconst & b);

templatevoid swap(weak_ptr& a, weak_ptr& b);

}

至於源**我就不貼上來了,到處都有,重點就是你搞懂了他的框架和函式介面的功用,這樣你就能夠相對簡單的搞懂源**

Boost庫的安裝

windows下的安裝和linux下安裝實際上大同小異,主要是弄清楚一些配置選項,和可執行檔案的作用。目錄為 d boost 1 62 0 step2 開啟命令提示符,找到指定目錄下的bootstrap.bat檔案,並執行 step3 執行生成的bjam.exe檔案 編譯的時間很長,耐心等待這段時間...

boost庫的安裝

一 對於windows平台,在vs2013中安裝配置boost 1 58 0庫 預設已安裝vs2013 1.到 www.boost.org boost 1 58 0.tar.bz2 2.解壓boost檔案到本地目錄 如g boost 1 58 0 可以發現解壓後的檔案中有乙個bootstrap.ba...

Boost庫的使用

fatal error c1083 無法開啟包括檔案 boost shared ptr.hpp no such file or directory它由c 標準委員會部分成員所設立的boost社群開發並維護,使用了許多現代c 程式設計技術,內容涵蓋字串處理 正規表示式 容器與資料結構 併發程式設計 函...