日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Boost学习笔记-智能指针

發(fā)布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Boost学习笔记-智能指针 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ?

1.? 智能指針


scoped_ptr

只在作用域內(nèi)生效,離開作用域既釋放資源,不能復(fù)制和賦值。類似于標準庫的auto_ptr,但它相對于auto_ptr的優(yōu)勢在于,他的要求更嚴格,使用起來更安全。auto_ptr擁有轉(zhuǎn)移語義,當(dāng)使用了賦值和復(fù)制操作時可能操作未定義行為。


scoped_array

???????? scoped_array的數(shù)組形式,區(qū)別在于他管理的對象是用new []分配,同時釋放時用delete[],能正確的釋放數(shù)組對象。不能用*和->操作符,支持[]操作符方式解引用。scoped_array不推薦使用,因為使用麻煩,可以用vector代替。


shared_ptr

???????? shared_ptr是一個引用計數(shù)型智能指針,當(dāng)計數(shù)為0時自動釋放管理的資源。支持*和->指針操作行為,提供隱式bool類型轉(zhuǎn)換用于指針有效性判斷。通過get()方法可以獲取原始指針。

???????? shared_ptr有兩個專門的函數(shù)來檢查引用計數(shù)。unique()指示該指針是否是對象的唯一管理者。use_count()指示對象正在由多少智能

指針引用。

???????? shared_ptr支持比較運算,基于內(nèi)部保持的指針實現(xiàn)。

???????? 通過make_shared<T>()函數(shù)可以使用工廠創(chuàng)建share_ptr對象,而省去顯示的new調(diào)用。

???????? shared_ptr支持定制刪除器,可以指定share_ptr管理的對象在析構(gòu)時自動調(diào)用刪除器,這樣可以使用share_ptr管理socket、file等任何資源對象。


shared_array

???????? shared_array和shared_ptr的管理類似于scope_array和scope_ptr的關(guān)系,同樣是用于管理數(shù)組對象。同樣不推薦使用,使用shared_ptr的容器vector<share_ptr<T>>更靈活。


weak_ptr

???????? weak_ptr一般和shared_ptr配合使用,它相當(dāng)于shared_ptr的一個輔助對象。shared_ptr和所引用的對象是一種強引用的關(guān)系,而weak_ptr和所引用的對象是一種弱引用關(guān)系,它并不增加對象的引用計數(shù)。

weak_ptr的lock()函數(shù)會去詢問對象是否已經(jīng)釋放,如果釋放則返回一個空指針的shared_ptr,如果對象存在,則返回一個管理該對象的share_ptr。

weak_ptr的expired()函數(shù)用于判斷對象是否已經(jīng)被析構(gòu),如果對象被析構(gòu)則返回true.

weak的expired和lock函數(shù)配合使用可以用于一些特殊情景,首先判斷對象是否存在,如果存在則獲取管理的對象的share_ptr指針并調(diào)用對象相關(guān)的方法。

?

轉(zhuǎn)載于:https://www.cnblogs.com/key000/p/4084751.html

總結(jié)

以上是生活随笔為你收集整理的Boost学习笔记-智能指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。