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

溫馨提示×

溫馨提示×

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

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

C++11的shared_ptr與weak_ptr示例分析

發布時間:2021-11-26 14:27:06 來源:億速云 閱讀:160 作者:iii 欄目:大數據

這篇文章主要講解了“C++11的shared_ptr與weak_ptr示例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++11的shared_ptr與weak_ptr示例分析”吧!

實例背景

先看下面的類圖:

C++11的shared_ptr與weak_ptr示例分析

這是一臺臺式電腦的靜態建模。DesktopPC有四個部分組成:主機,鍵盤,鼠標和顯示器。這一部分是聚合關系的體現。

由于各個設備信息輸出的需求,

  1. 鍵盤和鼠標需要向主板報告用戶輸入信息,所以也管理著主板信息;

  2. 主板需要向顯示器輸出顯示內容,所以管理這顯示器信息;


示例代碼

Monitor類

C++11的shared_ptr與weak_ptr示例分析

Monitor只有一個輸出函數,除此之外不需要其他任何信息。

MainBoard類

C++11的shared_ptr與weak_ptr示例分析

MainBoard類需要向Monitor類輸出顯示信息,所以需要Monitor類的參照信息。但是因為只是參照,所以這里使用了weak_ptr。有一點需要強調:Monitor對象在其他地方被刪除時并不需要更新monitor的內容,因為lock方法會檢測到這個事實。

Keyboard類

C++11的shared_ptr與weak_ptr示例分析

Keyboard類需要像Mainboard類輸出鍵盤信息,所以需要Mainboard類的參照信息;weak_ptr的使用方法和Mainboard中一致。

Mouse類

C++11的shared_ptr與weak_ptr示例分析

Mouse類和Keyboard類的想法完全相同。

DesktopPC類

C++11的shared_ptr與weak_ptr示例分析

DesktopPC和各個設備之間雖然存在全體和部分的關系,但是因為每個設備可一個脫離DesktopPC獨立存在,所以這種關系是松散的聚合關系,依然使用weak_ptr來管理。

主程序

準備工作完成之后,就是收獲的時刻了。首先是構建各個對象,建立連接關系。

C++11的shared_ptr與weak_ptr示例分析

接下來確認各個shared_ptr的引用情況。

C++11的shared_ptr與weak_ptr示例分析

接下來確認系統動作。

C++11的shared_ptr與weak_ptr示例分析

在兩次執行之間,代碼刪除了Monitor對象。請注意這里并沒有一般的鏈接解除處理中常見的指針操作。

另外代碼中也不需要顯式的清理內存操作。

執行結果:

C++11的shared_ptr與weak_ptr示例分析

通過執行結果可以看出:

在系統執行動作之前,所有的引用計數都為1,并沒有被weak_ptr影響;

當Monitor對象被簡單粗暴地刪除之后,weak_ptr的確認機制正確地,以一種非常簡明的方式處理了這個變化。

敲黑板

使用shared_ptr以后,代碼不再需要顯式釋放申請的內存,使內存的管理更加簡單。

使用weak_ptr之后,可以通過lock方法來確認對象是否有效,使得內存的相互參照的管理更加容易。

感謝各位的閱讀,以上就是“C++11的shared_ptr與weak_ptr示例分析”的內容了,經過本文的學習后,相信大家對C++11的shared_ptr與weak_ptr示例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

彭州市| 海南省| 广西| 云南省| 子长县| 元江| 英山县| 永昌县| 普兰县| 疏勒县| 池州市| 天峨县| 朝阳区| 临沭县| 黄冈市| 德阳市| 通化县| 辽中县| 新宾| 望江县| 济源市| 贵溪市| 蒙自县| 故城县| 綦江县| 孝昌县| 彰化县| 合作市| 大余县| 防城港市| 建始县| 通海县| 安图县| 全州县| 柯坪县| 荣昌县| 江川县| 中牟县| 武威市| 来安县| 贵定县|