欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
智能指針shared

  shared_ptr的作用有如同指針,但會(huì )記錄有多少個(gè)shared_ptrs共同指向一個(gè)對象。這便是所謂的引用計數(reference counting)。一旦最后一個(gè)這樣的指針被銷(xiāo)毀,也就是一旦某個(gè)對象的引用計數變?yōu)?,這個(gè)對象會(huì )被自動(dòng)刪除。shared_ptr 在 Technique report I 中已經(jīng)出現,在effective C++ 中提到過(guò)shared_ptr 的使用,現在已經(jīng)成為C++11 的正式成員。shared_ptr 的自動(dòng)刪除功能是一個(gè)很好的防止內存泄露的方法,在C++中也稱(chēng)為RAII(Resource Acquisition Is Initialization)。RAII 的一般做法是這樣的:在對象構造時(shí)獲取資源,接著(zhù)控制對資源的訪(fǎng)問(wèn)使之在對象的生命周期內始終保持有效,最后在對象析構的時(shí)候釋放資源。借此,我們實(shí)際上把管理一份資源的責任托管給了一個(gè)對象。這種做法有兩大好處:1,我們不需要顯式地釋放資源。2,采用這種方式,對象所需的資源在其生命期內始終保持有效 —— 我們可以說(shuō),此時(shí)這個(gè)類(lèi)維護了一個(gè) invariant。這樣,通過(guò)該類(lèi)對象使用資源時(shí),就不必檢查資源有效性的問(wèn)題,可以簡(jiǎn)化邏輯、提高效率。

下面來(lái)看一個(gè)簡(jiǎn)單的例子,涵蓋了shared_ptr的基本操作:

#include <memory> #include <iostream>  int main() {     auto sp1 = std::make_shared<int>(5);    std::cout << "sp1.unique() == " << std::boolalpha << sp1.unique() << std::endl;     std::shared_ptr<int> sp2 = sp1;     std::cout << "sp1.unique() == " << std::boolalpha << sp1.unique() << std::endl;    std::cout << "sp1.use_count(): "<< sp1.use_count()<<std::endl;    std::cout << "sp2.use_count(): "<< sp2.use_count()<<std::endl;    std::cout <<"sp1.get(): "<<sp1.get()<<std::endl;    std::cout <<"sp2.get(): "<<sp2.get()<<std::endl;    sp1.reset();        std::cout << "sp1.use_count(): "<< sp1.use_count()<<std::endl;    std::cout << "sp2.use_count(): "<< sp2.use_count()<<std::endl;    std::shared_ptr<int> sp3(new int(10));    std::cout <<"*sp2: "<< *sp2 <<std::endl;    std::cout <<"*sp3: "<< *sp3 <<std::endl;        sp2.swap(sp3);    std::cout <<"After swap: "<<std::endl;    std::cout <<"*sp2: "<< *sp2 <<std::endl;    std::cout <<"*sp3: "<< *sp3 <<std::endl;    }

運行結果:

C:\Windows\system32\cmd.exe /c shared_ptr.exe
sp1.unique() == true
sp1.unique() == false
sp1.use_count(): 2
sp2.use_count(): 2
sp1.get(): 001FBEEC
sp2.get(): 001FBEEC
sp1.use_count(): 0
sp2.use_count(): 1
*sp2: 5
*sp3: 10
After swap:
*sp2: 10
*sp3: 5
Hit any key to close this window...

說(shuō)明:unique 函數 判斷該指針的引用計數是否為1,use_count() 函數返回該指針的引用計數,get()函數返回該指針的值,reset()清除該指針的引用計數,swap()函數交換兩個(gè)指針的值。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C 11中智能指針的原理、使用、實(shí)現
C++11中的智能指針
shared_ptr
boost::shared
《c++ primer》 第12章 動(dòng)態(tài)內存 學(xué)習筆記
【轉】C++ 智能指針詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久