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

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.. 我淚流滿面
之前不知道這個(gè)的時(shí)候..用了很愚蠢的做法

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

順便推薦這本書(shū)
beyond_stl_cn.chm

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

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

進(jìn)入頁(yè)面后點(diǎn)右下的 view raw file 就可以下載了

以上是早上寫(xiě)的.. 寫(xiě)好后很高興的發(fā)布了.. 但是后來(lái)發(fā)現(xiàn)上面這段程序非常的白癡
最關(guān)鍵的就在于,其實(shí)這上面的兩個(gè)shared_ptr已經(jīng)循環(huán)引用了.. 再也沒(méi)有辦法自動(dòng)解開(kāi)
資源也就套死在了原地.. Oh My God... 居然愚蠢到這種地步..

然后才發(fā)現(xiàn).. weak_ptr 一點(diǎn)都不weak.. 這里就需要用weak_ptr來(lái)處理!

換成下面這個(gè)...
#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;
}

通過(guò)這個(gè)測(cè)試..
輸出的結(jié)果是
1 Construct
2 Construct
1 Destruct
2 Destruct

這樣的輸出并不奇怪. 因?yàn)?weak_ptr 是 shared_ptr 的觀察者,將 shared_ptr 傳給 weak_ptr 不會(huì)增加 shared_ptr的引用計(jì)數(shù). 所以這里的操作, p2 的引用計(jì)數(shù)是2, p1 的引用計(jì)數(shù)是1, 所以p1是unique的,p1先析構(gòu),p2的引用計(jì)數(shù)-1,然后析構(gòu).

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

自己犯的一個(gè)低級(jí)錯(cuò)誤,趕忙把帖子存草稿了. 現(xiàn)在弄清楚怎么處理后,才敢發(fā)上來(lái),呵呵~ ^ ^

posted on 2009-03-12 19:20 Charlie 侯杰 閱讀(8977) 評(píng)論(4)  編輯 收藏 引用
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黄| 国产精品国产三级国产aⅴ浪潮| 亚洲三级视频在线观看| 欧美综合国产| 中文在线资源观看网站视频免费不卡| 国产一区二三区| 亚洲电影免费在线| 91久久夜色精品国产网站| 欧美国产日本| 亚洲国产高清在线| 亚洲午夜精品福利| 久久九九热re6这里有精品| 久久亚洲色图| 欧美高清视频在线 | 亚洲欧洲久久| 日韩一级精品| 久久黄色影院| 亚洲日韩欧美视频一区| 亚洲一区免费网站| 欧美精品亚洲精品| 亚洲第一精品夜夜躁人人爽 | 久久一二三四| 欧美极品aⅴ影院| 国产三级欧美三级日产三级99| 原创国产精品91| 欧美亚洲色图校园春色| 欧美激情久久久久久| 欧美一区二区三区视频免费| 欧美三日本三级三级在线播放| 国外成人网址| 欧美在线关看| 亚洲一区三区电影在线观看| 欧美日韩国产在线一区| 亚洲激情在线| 亚洲国产精品成人| 久久人人爽人人爽爽久久| 国产欧美日韩综合| 欧美综合二区| 久久大综合网| 久久综合九色综合久99| 伊人久久婷婷色综合98网| 久久久久在线观看| 久久综合九九| 日韩亚洲欧美高清| 在线视频日本亚洲性| 国产精品av久久久久久麻豆网| 一区二区三区av| 亚洲女人天堂成人av在线| 午夜久久久久| 乱人伦精品视频在线观看| 亚洲国产成人不卡| 正在播放欧美视频| 亚洲国产欧美不卡在线观看| 夜夜嗨网站十八久久| 怡红院精品视频在线观看极品| 亚洲精品国产精品久久清纯直播 | 国产日韩亚洲| 夜夜嗨av一区二区三区中文字幕 | 一区二区三区在线看| 浪潮色综合久久天堂| 国产精品裸体一区二区三区| 亚洲国产人成综合网站| 亚洲精品在线视频| 一区二区三区我不卡| 99精品久久免费看蜜臀剧情介绍| 亚洲亚洲精品在线观看 | 亚洲破处大片| 欧美一区二区免费视频| 老司机67194精品线观看| 另类春色校园亚洲| 亚洲四色影视在线观看| 久久久久久久久久久一区 | 欧美日韩在线亚洲一区蜜芽 | 一道本一区二区| 亚洲电影在线免费观看| 午夜久久资源| 亚洲欧美久久| 中文在线一区| 亚洲精品国精品久久99热| 日韩小视频在线观看专区| 伊人久久大香线蕉av超碰演员| 久久久久国产免费免费| 国产午夜亚洲精品羞羞网站| 亚洲精品国产欧美| 99精品欧美一区二区三区综合在线| 欧美在线亚洲一区| 欧美国产激情| 亚洲欧美激情在线视频| 国产精品成人观看视频免费| 久久九九热免费视频| 这里只有视频精品| 欧美激情一区二区久久久| 蜜桃av噜噜一区| 激情六月婷婷久久| 久久综合久久综合这里只有精品| 欧美91大片| 午夜精品福利电影| 黄色成人免费网站| 欧美成人高清视频| 亚洲高清电影| 国产在线拍偷自揄拍精品| 午夜精品久久久久久久久久久 | 免费成人在线视频网站| 亚洲欧美日韩国产另类专区| 日韩一级黄色片| 久久夜色精品亚洲噜噜国产mv| 黄色精品在线看| 欧美日韩国产综合视频在线观看| 一区二区三区 在线观看视| 久久国产精品久久久久久| 好看的亚洲午夜视频在线| 欧美视频在线不卡| 欧美理论电影在线播放| 欧美一级大片在线免费观看| 亚洲午夜精品国产| 欧美夜福利tv在线| 久久在线免费观看| 性感少妇一区| 亚洲精品综合在线| 亚洲七七久久综合桃花剧情介绍| 1024国产精品| 在线激情影院一区| 亚洲国产日韩欧美一区二区三区| 国产精品一区二区久久精品 | 久久躁日日躁aaaaxxxx| 一区二区三区日韩欧美| 亚洲二区三区四区| 黄色成人在线| 亚洲欧洲一区二区在线观看| 亚洲韩日在线| 亚洲欧美不卡| 亚洲国产精品久久人人爱蜜臀| 亚洲精品美女在线观看播放| 在线亚洲一区观看| 欧美成人xxx| 亚洲国产一区二区三区a毛片| 久久久久久久综合狠狠综合| 亚洲欧美亚洲| 欧美在线视频不卡| 欧美成人网在线| 一区二区三区 在线观看视| 欧美在线亚洲一区| 欧美日韩在线播| 亚洲一区二区三区免费观看| 亚洲欧美一区二区精品久久久| 欧美在线观看一二区| 美女主播视频一区| 亚洲欧洲日本mm| 欧美高清在线视频| 亚洲精品欧美日韩专区| 欧美不卡一区| 免费成人在线观看视频| 亚洲精品1区| 久久久免费精品视频| 亚洲激情专区| 久久久视频精品| 国产亚洲一区二区三区在线观看| 99国产精品久久久久久久| 亚洲国产日韩一区| 欧美国产日韩一区二区在线观看| 精品盗摄一区二区三区| 亚洲欧洲日本国产| 欧美黄色网络| 亚洲人成在线播放网站岛国| 欧美一级大片在线观看| 午夜久久久久| 亚洲美女视频在线观看| 一本色道久久综合一区| 欧美日韩午夜视频在线观看| 久久精品欧美| 玖玖视频精品| 国产美女精品视频免费观看| 亚洲在线1234| 香蕉亚洲视频| 一区二区三区导航| 羞羞视频在线观看欧美| 亚洲人成久久| 久久久噜久噜久久综合| 日韩系列在线| 午夜久久久久久| 欧美xx视频| 国产日韩精品一区二区三区在线| 可以免费看不卡的av网站| 国产精品成人免费视频| 亚洲天堂av高清| 亚洲国产精品一区制服丝袜| 91久久久在线| 国产一区二区高清| 亚洲欧美久久久久一区二区三区| 亚洲国产欧美在线人成| 久久久999精品| 欧美激情视频一区二区三区免费 | 亚洲国产三级| 久热re这里精品视频在线6| 久久久免费av| 亚洲毛片一区二区|