這篇文章主要講解了C++11中weak_ptr的詳細(xì)解析,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
目前創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、淮南網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。1、為什么需要weak_ptr?
在正式介紹weak_ptr之前,我們先來回憶一下shared_ptr的一些知識。
我們知道shared_ptr是采用引用計數(shù)的智能指針,多個shared_ptr實例可以指向同一個動態(tài)對象,并維護(hù)了一個共享的引用計數(shù)器。
對于引用計數(shù)法實現(xiàn)的計數(shù),總是避免不了循環(huán)引用(或環(huán)形引用)的問題,shared_ptr也不例外。
我們先來看看下面這個例子:
#include#include #include using namespace std; class ClassB; class ClassA { public: ClassA() { cout << "ClassA Constructor..." << endl; } ~ClassA() { cout << "ClassA Destructor..." << endl; } shared_ptr pb; // 在A中引用B }; class ClassB { public: ClassB() { cout << "ClassB Constructor..." << endl; } ~ClassB() { cout << "ClassB Destructor..." << endl; } shared_ptr pa; // 在B中引用A }; int main() { shared_ptr spa = make_shared (); shared_ptr spb = make_shared (); spa->pb = spb; spb->pa = spa; // 函數(shù)結(jié)束,思考一下:spa和spb會釋放資源么? }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。