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

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

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

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

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全黄| 亚洲国产成人精品电影| 国产精品羞羞答答| 国内精久久久久久久久久人| 欧美精品一区二区三区国产精品| 成人福利网站在线观看11| 国产深夜精品福利| 国产亚洲视频中文字幕视频| 亚洲伊人一本大道中文字幕| 亚洲欧美一区二区三区久久| 日韩黄色高清视频| 国产精品a久久久久久| 日韩成人在线播放| 96pao国产成视频永久免费| 久久久精品国产亚洲| 国产精品手机播放| 欧美男插女视频| www欧美xxxx| 欧美又大又粗又长| 欧美综合激情网| 高跟丝袜一区二区三区| 色偷偷888欧美精品久久久| 欧美激情手机在线视频| 久久综合九色九九| 日韩电影网在线| 久久中文字幕视频| 中文字幕无线精品亚洲乱码一区| 一区二区亚洲精品国产| 久久久精品一区二区| 欧美大尺度电影在线观看| 一区二区三区回区在观看免费视频| 国产精品丝袜一区二区三区| 欧美小视频在线观看| 国产成人综合av| 红桃视频成人在线观看| 国产日韩精品在线观看| 亚洲自拍欧美另类| 丝袜美腿亚洲一区二区| 亚洲国产精彩中文乱码av| 欧美大奶子在线| 欧美激情国产日韩精品一区18| 成人精品久久一区二区三区| 亚洲精品视频在线观看视频| 国产精品一区二区3区| 国产91精品网站| 欧美黑人性猛交| 亚洲自拍另类欧美丝袜| 亚洲精品欧美一区二区三区| 91精品国产色综合久久不卡98| 亚洲精品成人久久久| 日韩大胆人体377p| 亚洲区bt下载| 亚洲欧美成人在线| 成人精品视频99在线观看免费| 国产精品久久婷婷六月丁香| 欧美大片免费观看在线观看网站推荐| 黄色精品一区二区| 亚洲国产97在线精品一区| 在线一区二区日韩| 亚洲美女自拍视频| www日韩欧美| 国产成人97精品免费看片| 亚洲九九九在线观看| 欧美亚洲在线播放| 欧美日韩国产精品专区| zzijzzij亚洲日本成熟少妇| 色七七影院综合| 日韩av网站电影| 国产一区二区三区直播精品电影| 亚洲男人天堂九九视频| 日韩激情av在线免费观看| 91中文字幕一区| 色综合久久精品亚洲国产| 亚洲精品福利视频| 美日韩丰满少妇在线观看| 日本免费在线精品| 亚洲欧洲黄色网| 欧美夫妻性视频| 亚洲成人黄色在线| 欧美日本啪啪无遮挡网站| 国产精品www色诱视频| 国产成人精品优优av| 国产成人一区三区| 精品久久久久久亚洲精品| 九色91av视频| 操日韩av在线电影| 国产亚洲福利一区| 亚洲欧美中文在线视频| 日韩成人在线观看| 97在线视频国产| 亚洲欧美日韩天堂一区二区| 国产精品福利小视频| 久久亚洲国产成人| 中文字幕免费精品一区| 日韩欧美在线视频观看| 久久69精品久久久久久久电影好| 成人午夜小视频| 国产主播欧美精品| 国产成人av在线播放| 日韩中文字幕国产精品| 日韩成人激情在线| 91精品国产综合久久香蕉最新版| 亚洲成人激情在线观看| 精品福利樱桃av导航| 欧美性猛交xxxx黑人猛交| 国产欧美在线播放| 国产精品免费久久久久久| 亚洲国产女人aaa毛片在线| 国产91在线播放九色快色| 欧美大尺度激情区在线播放| 久久久噜噜噜久久中文字免| 亚洲在线视频观看| 亚洲一区第一页| 97人人模人人爽人人喊中文字| 国产精品三级网站| 在线丨暗呦小u女国产精品| 欧美另类69精品久久久久9999| 国产欧美日韩精品丝袜高跟鞋| 国产乱肥老妇国产一区二| 久久免费精品视频| 国产欧美一区二区三区在线看| 国产精品夜色7777狼人| 久久久精品欧美| 久久人人97超碰精品888| 久久伊人精品天天| 欧美中文字幕视频在线观看| 欧美日韩美女视频| 欧美成人免费在线观看| 日本精品性网站在线观看| 国产精品盗摄久久久| 欧美激情影音先锋| 欧美激情免费视频| 国产视频精品一区二区三区| 欧美精品在线观看91| www日韩中文字幕在线看| 亚洲福利在线视频| 中文字幕在线看视频国产欧美| 国产精品国产自产拍高清av水多| 国产99视频精品免视看7| 97成人在线视频| 亚洲成avwww人| 亚洲视频一区二区| 欧美黑人视频一区| 久久精品99久久久久久久久| 不卡毛片在线看| 亚洲一区二区三区久久| 国产婷婷色综合av蜜臀av| 在线看片第一页欧美| 92福利视频午夜1000合集在线观看| 国产精品吊钟奶在线| 国产精品最新在线观看| 精品国产31久久久久久| 国产精品日韩在线| 久久久久久成人精品| 久久久久久国产精品| 久久久久久这里只有精品| 91精品国产91久久久久久吃药| 欧洲成人在线视频| 成人激情免费在线| 国产精品视频99| 91色视频在线导航|