青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 23,  comments - 94,  trackbacks - 0
 1 #include <iostream>
 2 #include <boost/shared_ptr.hpp>
 3 #include <boost/enable_shared_from_this.hpp>
 4 
 5 using namespace std;
 6 
 7 class A : public boost::enable_shared_from_this<A>
 8 {
 9 public:
10     boost::shared_ptr<A> child_;
11     boost::shared_ptr<A> parent_;
12 
13     void add(boost::shared_ptr<A> child)
14     {
15         child_ = child;
16         child_->set(shared_from_this());
17     }
18 
19     void set(boost::shared_ptr<A> parent)
20     {
21         parent_ = parent;
22     }
23 };
24 
25 int main()
26 {
27     boost::shared_ptr<A> p1(new A);
28     boost::shared_ptr<A> p2(new A);
29 
30     p1->add(p2);
31 
32     cout<<p1<<endl;
33     cout<<p2<<endl;
34     cout<<p1->child_<<endl;
35     cout<<p2->parent_<<endl;
36     cout<<p1.use_count()<<endl;
37     cout<<p2.use_count()<<endl;
38 
39     return 0;
40 }

有了shared_from_this.. 我淚流滿面
之前不知道這個的時候..用了很愚蠢的做法

void add(shared_ptr<A> child)
    child_ = child;
    child_->set(shared_ptr<A>(this));
}
結果錯誤連連~ 然后放棄使用shared_ptr... 用raw_ptr...

順便推薦這本書
beyond_stl_cn.chm

放到了我的SVN上.. 一本很好的介紹Boost如何使用的書..

http://code.google.com/p/charlib/source/browse/trunk/Boost%20Book/Beyond_STL_cn.rar

進入頁面后點右下的 view raw file 就可以下載了

以上是早上寫的.. 寫好后很高興的發布了.. 但是后來發現上面這段程序非常的白癡
最關鍵的就在于,其實這上面的兩個shared_ptr已經循環引用了.. 再也沒有辦法自動解開
資源也就套死在了原地.. Oh My God... 居然愚蠢到這種地步..

然后才發現.. weak_ptr 一點都不weak.. 這里就需要用weak_ptr來處理!

換成下面這個...
#include <iostream>
#include 
<boost/shared_ptr.hpp>
#include 
<boost/weak_ptr.hpp>
#include 
<boost/enable_shared_from_this.hpp>

using namespace std;

class A : public boost::enable_shared_from_this<A>
{
public:
    A(
const int id) : id_(id) { cout<<id_<<" Constructed!"<<endl; }
    
~A() { cout<<id_<<" Destructed!"<<endl; }

    
int id_;
    boost::shared_ptr
<A> child_;
    boost::weak_ptr
<A> parent_;

    
void add(boost::shared_ptr<A> child)
    {
        child_ 
= child;
        child_
->set(shared_from_this());
    }

    
void set(boost::shared_ptr<A> parent)
    {
        parent_ 
= parent;
    }

    boost::shared_ptr
<A> get_parent()
    {
        
return parent_.lock();
    }
};

int main()
{
    boost::shared_ptr
<A> p1(new A(1));
    boost::shared_ptr
<A> p2(new A(2));

    p1
->add(p2);

    
return 0;
}

通過這個測試..
輸出的結果是
1 Construct
2 Construct
1 Destruct
2 Destruct

這樣的輸出并不奇怪. 因為 weak_ptr 是 shared_ptr 的觀察者,將 shared_ptr 傳給 weak_ptr 不會增加 shared_ptr的引用計數. 所以這里的操作, p2 的引用計數是2, p1 的引用計數是1, 所以p1是unique的,p1先析構,p2的引用計數-1,然后析構.

不過這里資源的析構順序可能不是我們關心的范圍,我這里認為把資源丟給智能指針這類物件管理后,主要是為了資源不泄漏,資源的析構順序如果在關心的范圍,也就該自己管理該資源了.

自己犯的一個低級錯誤,趕忙把帖子存草稿了. 現在弄清楚怎么處理后,才敢發上來,呵呵~ ^ ^

posted on 2009-03-12 19:20 Charlie 侯杰 閱讀(8986) 評論(4)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


by Charlie
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区精品国产| 久久本道综合色狠狠五月| 美女精品国产| 久久亚洲图片| 久久露脸国产精品| 可以看av的网站久久看| 久久狠狠一本精品综合网| 午夜精品久久久久久久久久久久 | 亚洲国产精品成人精品| 欧美日韩另类丝袜其他| 国产精品久久久久久影视| 欧美午夜精品久久久久久浪潮| 欧美精品一二三| 亚洲伊人伊色伊影伊综合网 | 亚洲一级二级| 欧美一级视频一区二区| 亚洲一区网站| 激情久久久久| 欧美国产第一页| 在线性视频日韩欧美| 亚洲欧美另类在线| 国产偷国产偷亚洲高清97cao| 久久久久久久久伊人| 欧美v国产在线一区二区三区| 一区二区精品| 欧美在线视频不卡| 亚洲精品国产精品乱码不99按摩 | 亚洲人成啪啪网站| 久久成人人人人精品欧| 国产乱子伦一区二区三区国色天香| 久久精品国产96久久久香蕉| 1024国产精品| 亚洲看片一区| 狠狠综合久久av一区二区老牛| 亚洲国产欧美日韩| 国产日韩在线看| 亚洲欧洲综合| 黄色av一区| 亚洲一区3d动漫同人无遮挡| 亚洲国产欧美不卡在线观看| 亚洲欧美日韩中文视频| 日韩亚洲精品电影| 久久看片网站| 久久久久久久久综合| 国产精品va在线| 亚洲国产第一| 影音先锋日韩精品| 欧美制服丝袜| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧美春色| 欧美日韩精品久久久| 亚洲第一精品久久忘忧草社区| 国产一区二区三区日韩| 亚洲午夜激情| 亚洲一区视频在线| 欧美三级视频在线| 亚洲免费在线播放| 国产午夜精品福利| 一区二区三区四区五区在线| 国产精品日本精品| 国产亚洲女人久久久久毛片| 亚洲午夜激情网站| 亚洲精品综合久久中文字幕| 亚洲欧洲美洲综合色网| 久久亚洲图片| 亚洲国产视频一区| 免费成人黄色片| 亚洲人午夜精品免费| 亚洲性夜色噜噜噜7777| 久久久久国产精品www| 亚洲高清视频的网址| 一区二区精品在线观看| 亚洲精品一区二区三区四区高清| 久久久久九九九| 欧美www视频| 亚洲理论电影网| 在线亚洲电影| 可以免费看不卡的av网站| 免费成人av| 一区二区三区免费观看| 欧美日韩国产高清| 亚洲一区二区精品视频| 欧美日韩精品一本二本三本| 亚洲一区在线观看视频| 亚洲欧美资源在线| 黄色亚洲大片免费在线观看| 久久免费视频观看| 一区二区三区黄色| 亚洲主播在线播放| 玖玖玖免费嫩草在线影院一区| 国内精品一区二区三区| 亚洲影院一区| 欧美一区二区三区免费视| 欧美成人国产| 亚洲高清成人| 久久亚洲精品视频| 亚洲一区二区高清视频| 国产日韩精品在线| 日韩一区二区精品在线观看| 久久九九有精品国产23| 欧美成人在线免费观看| 欧美一区二区三区的| 国产在线不卡| 模特精品裸拍一区| 欧美一区二区三区啪啪| 久久久高清一区二区三区| 亚洲女爱视频在线| 国产亚洲精品久久久| 亚洲黄色免费网站| 亚洲一区二区三区精品视频| 你懂的成人av| 亚洲男同1069视频| 好男人免费精品视频| 91久久中文字幕| 国产精品久久久久91| 欧美成人在线免费观看| 国产欧美综合一区二区三区| 免费欧美在线视频| 欧美在线播放高清精品| 日韩亚洲欧美成人一区| 亚洲高清三级视频| 亚洲免费小视频| 91久久亚洲| 亚洲电影自拍| 久久久精品免费视频| 亚洲午夜视频在线| 亚洲经典三级| 国内一区二区三区在线视频| 欧美午夜免费电影| 欧美国产日韩在线| 午夜精品久久久久久久男人的天堂| 亚洲国产一区在线| 狠狠色综合色区| 亚洲视频精选| 日韩一本二本av| 久久久久久高潮国产精品视| 久久人人97超碰人人澡爱香蕉| 欧美日韩精品在线观看| 久久一二三四| 欧美综合国产| 久久久久国产一区二区| 国产欧美一区视频| 国产精品久久二区二区| 一本色道久久88精品综合| 欧美精品久久99久久在免费线| 亚洲高清资源综合久久精品| 欧美夫妇交换俱乐部在线观看| 99国产精品私拍| 亚洲国产欧美一区| 久久综合亚洲社区| 亚洲东热激情| 欧美成人午夜| 蜜桃久久精品一区二区| 久久精品视频在线看| 欧美有码视频| 久久aⅴ国产紧身牛仔裤| 久久精品国产v日韩v亚洲| 久久久久国色av免费观看性色| 久久精品1区| 亚洲国产精品激情在线观看| 亚洲人成网站777色婷婷| 国产亚洲精品久久飘花 | 久久久另类综合| 国产精品久久久久99| 国产三级欧美三级| 午夜宅男久久久| 一本不卡影院| 亚洲大片av| 另类专区欧美制服同性| 久久疯狂做爰流白浆xx| 亚洲国产激情| 亚洲一区二区三区中文字幕| 国产欧美日韩三区| 久久亚洲精品欧美| 欧美成人一品| 国产精品a久久久久久| 国产亚洲成av人在线观看导航| 精品91在线| a4yy欧美一区二区三区| 欧美在线播放一区二区| 美女露胸一区二区三区| 亚洲精品一区二区在线观看| 亚洲欧美日韩第一区| 久久久久久成人| 91久久国产自产拍夜夜嗨| 一本色道久久综合亚洲精品小说| 亚洲欧美三级在线| 免费国产一区二区| 欧美三级第一页| 在线观看成人网| 国产精品福利影院| 久久天堂成人| 国产精品www.| 亚洲国产精品成人精品| 亚洲欧美日本国产有色| 欧美成人中文字幕在线| 亚洲一区二区三区在线观看视频| 另类天堂av| 国产视频一区在线观看一区免费| 亚洲精品偷拍|