亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 中boost::share_ptr智能指針的使用方法

2020-05-23 13:37:50
字體:
來源:轉載
供稿:網友

C++ 中boost::share_ptr智能指針的使用方法

最近項目中使用boost庫的智能指針,感覺智能指針還是蠻強大的,在此貼出自己學習過程中編寫的測試代碼,以供其他想了解boost智能指針的朋友參考,有講得不正確之處歡迎指出討論。當然,使用boost智能指針首先要編譯boost庫,具體方法可以網上查詢,在此不再贅述。

智能指針能夠使C++的開發簡單化,主要是它能夠自動管理內存的釋放,而且能夠做更多的事情,即使用智能指針,則可以再代碼中new了之后不用delete,智能指針自己會幫助你管理內存資源的釋放。

Boost庫的智能指針有很多種,下面通過示例代碼來說明其中share_ptr的使用方法。    

/ test.cpp : Defines the entry point for the console application.#include "stdafx.h"#include <iostream>#include <boost/shared_ptr.hpp>#include <vector> /** 測試類  */class CTest{public:        /**  構造函數 */    CTest(int m)    {        m_member = m;         /** 申請空間 */         m_pname = new char[2];    }    /** 析構函數 */    ~CTest()    {        delete m_pname;    }     /** 成員函數 */     int getMember()    {        return m_member;    } private:     /** 數據成員 */     int m_member;    char * m_pname;   }; int _tmain(int argc, _TCHAR* argv[]){ /** 示例代碼【1】 */      /** boost::shared_ptr智能指針含有一個引用計數器 */     /** 引用指針計數器記錄有多少個引用指針指向同一個對象,如果最后一個引用指針被銷毀的時候,那么就銷毀對象本身。 */      /** 使用智能指針創建一個對象 */    /** 注意: 智能指針不支持直接 new 例如: boost::shared_ptr<CTest> pTemp = new CTest(2) 是錯誤的 */     boost::shared_ptr<CTest> pTemp(new CTest(10));     /** 創建一個新的智能指針也指向新創建的CTest對象 */     /** 智能指針支持等號操作 */     boost::shared_ptr<CTest> pSecond = pTemp;     /** 通過智能指針訪問該對象 */     std::cout << pTemp->getMember() << std::endl;     /** 讓第一個智能指針為空,不再指向該對象,注意,智能指針不能使用 pTemp = NULL */    pTemp.reset();     /** 讓第二個智能指針也為空,這時該CTest對象已經沒有智能指針指向它了,會自動析構 */     pSecond.reset(); /** 示例代碼【2】 */      /** 將一個普通的指針轉換為智能指針 */     /** 創建一個普通的指針,new一個對象 */     CTest * pATest = new CTest(100);    /** 轉換為智能指針 */     boost::shared_ptr<CTest> pShareTest(pATest);     /** 智能指針會自動管理創建的CTest對象,不允許再進行delete,否則程序會掛掉 */     delete pATest;     /** 讓智能指針為空,則對象會被自動析構 */     pShareTest.reset();  /** 示例代碼【3】 */      /** 創建一個容器存放智能指針 */    /** 這里需要注意: 兩個“ > ” 不要寫到一起了,否則會產生 >> 運算符重載  */     std::vector<boost::shared_ptr<CTest> > vec;     /** 創建一個臨時的CTest對象,存放到上面的容器 */      {        /** 使用智能指針創建一個對象 */        boost::shared_ptr<CTest> pTemp(new CTest(2));         /** 添加到容器中 */         vec.push_back(pTemp);         /** 離開大括號,則pTemp析構,于是只有容器中的指針指向了新創建的CTest */     }     /** 讓vector迭代器指向剛剛push_back到容器中的智能指針 */     std::vector<boost::shared_ptr<CTest> >::iterator itor = vec.begin();     /** 訪問智能指針, (*itor)即為智能指針對象,指向了剛才創建的CTest,通過 -> 方法訪問CTest對象  */     std::cout << (*itor)->getMember()<<std::endl;      /** 清空容器,在容器被清空時,容器中的智能指針被刪除,        由于此時已經沒有智能指針指向該對象,故該CTest對象會自動析構 */     vec.clear();     int temp;    std::cin >> temp;      return 0;} /** 使用智能指針需要注意的地方 */  // 1. 智能指針其實是一種類對象,并不是簡單的指針,故當智能指針包含另一個類的對象時,//    需要包含另一個類的頭文件,而不能簡單的使用前向引用聲明// eg: CMyClass.h文件  #include "CTest.h" /** 不能簡單地使用前向引用聲明,必須包含頭文件 */  // 前向引用聲明 class CTest class CMyClass{public: private:    boost::shared_ptr<CTest> m_pTest; }; // 2. shared_ptr 是線程安全的 // 3. 使用智能指針出現循環引用的情況// 即兩個類互相含有對方類對象的智能指針

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲影院色在线观看免费| 国产精品一区久久| 久久影视电视剧免费网站清宫辞电视| 精品国偷自产在线| 欧美亚洲在线播放| 欧美—级a级欧美特级ar全黄| 亚洲国产欧美精品| 日韩精品在线影院| 中文字幕亚洲情99在线| 亚洲午夜未满十八勿入免费观看全集| 午夜精品福利在线观看| 欧美激情视频一区| 综合av色偷偷网| 欧美一级免费看| 久久精品国产99国产精品澳门| 性色av一区二区三区红粉影视| 国产成人午夜视频网址| 亚洲国产三级网| 欧美在线观看网站| 色综合91久久精品中文字幕| 国产精品羞羞答答| 国产精品久久久久久久久| 久久精品视频一| 2018中文字幕一区二区三区| 精品国产31久久久久久| 97超级碰在线看视频免费在线看| 久久久99久久精品女同性| 青青a在线精品免费观看| 国产精品电影在线观看| 欧美视频在线看| 欧美精品xxx| 国产精品色婷婷视频| 久久婷婷国产麻豆91天堂| 欧美性高潮床叫视频| 日本午夜精品理论片a级appf发布| 日韩在线观看视频免费| 亚洲国内精品在线| 在线看日韩av| 午夜精品久久久久久99热软件| 久久免费视频网站| 中文字幕一精品亚洲无线一区| 国产欧美精品日韩精品| 欧美激情va永久在线播放| 日韩精品久久久久| 日韩av在线影院| 久久99精品久久久久久青青91| 久久伊人91精品综合网站| 久热爱精品视频线路一| 日韩欧美高清在线视频| 亚洲精品一区久久久久久| 久久久国产一区二区| 久久综合色88| 性色av一区二区三区在线观看| 日韩成人在线电影网| 久久精品国产精品亚洲| 欧美日韩视频免费播放| 国产精品久久久久久av福利| www日韩欧美| 国产亚洲人成网站在线观看| 亚洲视频欧美视频| 欧美成人黄色小视频| 欧美美女15p| 欧美一级在线亚洲天堂| 亚洲免费视频一区二区| 97视频在线免费观看| 国产日韩欧美电影在线观看| 日韩精品免费在线播放| 亚洲老头同性xxxxx| 亚洲最大的av网站| 永久免费看mv网站入口亚洲| 国产日韩在线看| 91欧美精品成人综合在线观看| 中日韩美女免费视频网址在线观看| 日韩专区在线观看| 日韩在线一区二区三区免费视频| 97在线视频一区| 97国产真实伦对白精彩视频8| 在线看国产精品| 97精品国产97久久久久久免费| 精品国产91久久久| 日韩在线资源网| 日韩高清欧美高清| 亚洲欧美另类中文字幕| 国产精品视频男人的天堂| 在线观看日韩视频| 精品高清美女精品国产区| 欧美最猛性xxxx| 亚洲在线免费看| 亚洲视频axxx| 在线亚洲国产精品网| 色老头一区二区三区在线观看| 精品久久久久久久久久ntr影视| 欧美午夜宅男影院在线观看| 久久久亚洲欧洲日产国码aⅴ| 亚洲午夜未删减在线观看| 亚洲在线免费观看| 欧美日韩成人在线视频| 在线国产精品视频| 欧美激情网站在线观看| 中文字幕日韩在线播放| 欧美一级黑人aaaaaaa做受| 欧美日韩激情小视频| 中文字幕9999| 日本欧美国产在线| 亚洲欧美日韩成人| 久久激情五月丁香伊人| 国产精品丝袜高跟| 欧美性理论片在线观看片免费| 国产一区在线播放| 亚洲第一网站免费视频| 伊人青青综合网站| 国产a级全部精品| 亚洲精品福利视频| 国产成人拍精品视频午夜网站| 粗暴蹂躏中文一区二区三区| 欧美激情乱人伦| 欧美老少做受xxxx高潮| 大桥未久av一区二区三区| 国产精品嫩草视频| 欧美高清在线视频观看不卡| 亚洲天堂免费视频| 色婷婷av一区二区三区久久| 国产成人午夜视频网址| 欧美成人手机在线| 国产精品亚洲第一区| 日韩美女中文字幕| 亚洲欧美一区二区三区情侣bbw| 欧美极品少妇xxxxⅹ喷水| 国产精品成熟老女人| 91欧美日韩一区| 亚洲乱码一区二区| 国产精品一区二区久久| 国产成人一区二区| 久久人人爽国产| 亚洲色图在线观看| 日韩av综合中文字幕| xxxxx91麻豆| 亚洲黄页网在线观看| 一道本无吗dⅴd在线播放一区| 国产精品美女久久久免费| 日韩国产欧美精品一区二区三区| 俺去了亚洲欧美日韩| 亚洲激情 国产| 久久99国产精品自在自在app| 欧美在线亚洲一区| 国产一区二区三区在线免费观看| 亚洲丁香久久久| 亚洲欧美综合精品久久成人| 亚洲最大在线视频| 日本一欧美一欧美一亚洲视频| 日韩美女免费视频| 欧美中文在线观看国产| 亚洲男人天堂视频| 国产情人节一区| 欧美巨乳美女视频| 亚洲精品国产综合久久| 欧美日韩一区二区三区在线免费观看| 日韩精品在线观看网站| 国产精品久久久久久影视| 国产精品日日摸夜夜添夜夜av| 欧美精品久久久久| 成人久久久久爱| 亚洲日韩欧美视频一区| 欧美日产国产成人免费图片|