亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中如何使用智能指針

發布時間:2021-07-19 17:48:20 來源:億速云 閱讀:143 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關C++中如何使用智能指針,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

內存泄露是C++程序員都頭疼的大問題。C++缺乏像JAVA、C#一樣,擁有GC這么一項有利的武器,它將內存管理的部分權限交給了程序員。雖然GC的存在節約了開發、排錯的時間與成本,但是C++為了追求運行速度而20年來堅決不予補充進其標準。(題外話:C++通過加大開發難度去換取執行速度的做法,在現在看來不知是否能給與正面的評價,還是留給將來再說吧。)

從此,在堆上申請了內存忘了釋放、所造成的內存泄露的問題就一直困擾著C++程序員。也許為了稍許彌補沒有垃圾回收器所造成的開發門檻高,各大廠商開發的C++庫中都像COM學習引入智能指針試圖解決部分目前存在的問題。

C++智能指針是存儲指向動態分配(堆)對象指針的類, 用于生存期控制, 能夠確保自動正確的銷毀動態分配的對象,防止內存泄露。它的一種通用實現技術是使用引用計數(reference count)。智能指針類將一個計數器與類指向的對象相關聯,引用計數跟蹤該類有多少個對象共享同一指針。每次創建類的新對象時,初始化指針并將引用計數置為1;當對象作為另一對象的副本而創建時,拷貝構造函數拷貝指針并增加與之相應的引用計數;對一個對象進行賦值時,賦值操作符減少左操作數所指對象的引用計數(如果引用計數為減至0,則刪除對象),并增加右操作數所指對象的引用計數;調用析構函數時,構造函數減少引用計數(如果引用計數減至0,則刪除基礎對象)。

說到C++智能指針,我們一定要看看標準C++庫提供的“搞笑的”智能指針:auto_ptr。

標準庫中提供了C++程序的基本設施。雖然C++標準庫隨著C++標準折騰了許多年,直到標準的出臺才正式定型,網上評論C++標準庫時都說:“在標準庫的實現上卻很令人欣慰得看到多種實現,并且已被實踐證明為有工業級別強度的佳作。”但目前的標準C++中,只有一種獨苗智能指針:std::auto_ptr。

auto_ptr指針是一個RAII對象,它初始化時獲得資源,析構時自動釋放資源(生命期結束).它的缺點數不勝數:

1、auto_ptr要求一個對象只能有一個擁有者,嚴禁一物二主

2、缺少對引用數和數組的支持。

3、不可將auto_ptr對象作為STL容器的元素。C++標準明確禁止這樣做,否則可能會碰到不可預見的結果。(這一條暈死一大片)。

4、auto_ptr在被復制的時候會傳輸所有權

反正由此可見:標準庫的智能指針就是無甚大用。

在這樣的情況下,C++標準委員會自然需要考慮引入新的智能指針。目前由C++標準委員會庫工作組發起的Boost 組織開發了Boost系列智能指針。

在Boost中的C++智能指針有五種: scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr.

前4種完全是針對標準庫中的auto_ptr提出解決方案,如:scope_ptr是針對“auto_ptr在被復制的時候會傳輸所有權”這一弱點提出的。***一種沒見過,看名字像是弱引用智能指針,我懷疑是不是類似于JAVA中弱引用一樣,有待進一步學習。

上述就是小編為大家分享的C++中如何使用智能指針了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

乌鲁木齐县| 都安| 洮南市| 犍为县| 微博| 台江县| 和政县| 常宁市| 菏泽市| 凉山| 怀化市| 新晃| 开鲁县| 花莲市| 晋江市| 林芝县| 科技| 巴林右旗| 鲁山县| 祁东县| 合江县| 泾川县| 元谋县| 班玛县| 建水县| 宜宾县| 雅安市| 泗洪县| 霍山县| 宁夏| 邹平县| 惠州市| 武冈市| 沂源县| 锡林郭勒盟| 新乡县| 皋兰县| 阳东县| 洪洞县| 紫金县| 武山县|