真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

巴里坤哈薩克網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,巴里坤哈薩克網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為巴里坤哈薩克上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的巴里坤哈薩克做網(wǎng)站的公司定做!

實(shí)例背景

先看下面的類圖:

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

這是一臺(tái)臺(tái)式電腦的靜態(tài)建模。DesktopPC有四個(gè)部分組成:主機(jī),鍵盤,鼠標(biāo)和顯示器。這一部分是聚合關(guān)系的體現(xiàn)。

由于各個(gè)設(shè)備信息輸出的需求,

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

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

示例代碼

Monitor類

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

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

MainBoard類

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

MainBoard類需要向Monitor類輸出顯示信息,所以需要Monitor類的參照信息。但是因?yàn)橹皇菂⒄?,所以這里使用了weak_ptr。有一點(diǎn)需要強(qiáng)調(diào):Monitor對(duì)象在其他地方被刪除時(shí)并不需要更新monitor的內(nèi)容,因?yàn)閘ock方法會(huì)檢測(cè)到這個(gè)事實(shí)。

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和各個(gè)設(shè)備之間雖然存在全體和部分的關(guān)系,但是因?yàn)槊總€(gè)設(shè)備可一個(gè)脫離DesktopPC獨(dú)立存在,所以這種關(guān)系是松散的聚合關(guān)系,依然使用weak_ptr來管理。

主程序

準(zhǔn)備工作完成之后,就是收獲的時(shí)刻了。首先是構(gòu)建各個(gè)對(duì)象,建立連接關(guān)系。

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

接下來確認(rèn)各個(gè)shared_ptr的引用情況。

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

接下來確認(rèn)系統(tǒng)動(dòng)作。

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

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

另外代碼中也不需要顯式的清理內(nèi)存操作。

執(zhí)行結(jié)果:

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

通過執(zhí)行結(jié)果可以看出:

在系統(tǒng)執(zhí)行動(dòng)作之前,所有的引用計(jì)數(shù)都為1,并沒有被weak_ptr影響;

當(dāng)Monitor對(duì)象被簡(jiǎn)單粗暴地刪除之后,weak_ptr的確認(rèn)機(jī)制正確地,以一種非常簡(jiǎn)明的方式處理了這個(gè)變化。

敲黑板

使用shared_ptr以后,代碼不再需要顯式釋放申請(qǐng)的內(nèi)存,使內(nèi)存的管理更加簡(jiǎn)單。

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

感謝各位的閱讀,以上就是“C++11的shared_ptr與weak_ptr示例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C++11的shared_ptr與weak_ptr示例分析這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)頁題目:C++11的shared_ptr與weak_ptr示例分析
轉(zhuǎn)載來于:http://weahome.cn/article/pojihh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部