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

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>
            美女在线一区二区| 国产精品成人午夜| 最新69国产成人精品视频免费| 性高湖久久久久久久久| 亚洲欧美变态国产另类| 国产亚洲精久久久久久| 卡通动漫国产精品| 欧美高清视频在线观看| 亚洲一区二区三区欧美| 亚洲欧美中文另类| 1000部国产精品成人观看| 亚洲高清在线精品| 欧美三区在线视频| 久久一二三国产| 欧美国产视频在线| 欧美亚洲在线观看| 美国十次成人| 亚洲在线播放| 久久噜噜噜精品国产亚洲综合| 亚洲精品久久久久久下一站| 一区二区电影免费在线观看| 国产日韩欧美制服另类| 欧美成人午夜激情在线| 欧美三区在线观看| 美女爽到呻吟久久久久| 欧美日韩在线另类| 男男成人高潮片免费网站| 欧美精品 国产精品| 久久国产精品99国产精| 欧美日韩第一页| 裸体女人亚洲精品一区| 国产精品v欧美精品v日韩| 欧美.com| 国产一区二区丝袜高跟鞋图片| 亚洲福利视频一区| 国产在线精品一区二区夜色| 亚洲日本精品国产第一区| 国产欧美在线播放| 99精品免费| 亚洲精品视频在线观看网站 | 亚洲激情成人网| 亚洲一区二区在| 一区二区欧美亚洲| 久久久久久久一区| 欧美专区亚洲专区| 欧美性猛交xxxx免费看久久久| 欧美国产视频在线| 国内视频一区| 香蕉久久一区二区不卡无毒影院 | 亚洲精品影院| 亚洲黄色在线观看| 久久福利电影| 久久精品人人做人人爽电影蜜月| 欧美日韩一区综合| 日韩一级黄色片| 99在线|亚洲一区二区| 免费日韩一区二区| 亚洲福利视频网| 亚洲人成在线免费观看| 久热这里只精品99re8久| 久久久久免费观看| 国产综合色在线视频区| 午夜亚洲一区| 久久久人人人| 国产有码在线一区二区视频| 欧美影院精品一区| 免费不卡中文字幕视频| 亚洲第一视频| 欧美—级高清免费播放| 亚洲欧洲日产国产综合网| 亚洲日本理论电影| 欧美欧美天天天天操| 亚洲人成77777在线观看网| 亚洲精品视频免费| 欧美日韩国产在线看| 在线午夜精品| 久久国产免费看| 精品成人在线观看| 欧美成人一区二区三区在线观看 | 久久福利精品| 黑人操亚洲美女惩罚| 久久久亚洲一区| 亚洲人成人77777线观看| 一区二区欧美视频| 国产欧美精品va在线观看| 欧美一区国产在线| 欧美国产一区二区| 一本久道综合久久精品| 欧美亚一区二区| 久久精品国产亚洲精品| 亚洲丰满少妇videoshd| 宅男66日本亚洲欧美视频| 国产精品视频最多的网站| 欧美一区二区精品| 亚洲国产视频直播| 欧美一区在线看| 亚洲精品久久久久久下一站| 欧美日韩在线播放一区| 久久国内精品视频| 亚洲精品国产无天堂网2021| 欧美一区二区三区在线免费观看| 一区免费视频| 国产精品视频内| 免费成人你懂的| 亚洲欧美日韩在线高清直播| 欧美成人tv| 久久福利视频导航| 在线视频亚洲一区| 激情综合中文娱乐网| 欧美三区在线视频| 久久综合亚洲社区| 先锋影音国产一区| 亚洲三级免费| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一区欧美激情| 亚洲黄色高清| 极品少妇一区二区三区| 国产精品qvod| 欧美精品三级| 蜜臀久久99精品久久久画质超高清 | 欧美亚洲色图校园春色| 亚洲七七久久综合桃花剧情介绍| 国产欧美日韩一区| 欧美网站在线| 欧美国产91| 你懂的国产精品| 久久精品2019中文字幕| 亚洲综合日韩在线| 一区二区冒白浆视频| 91久久国产综合久久| 麻豆国产精品va在线观看不卡| 性做久久久久久久久| 一本大道av伊人久久综合| 亚洲福利视频专区| 在线观看三级视频欧美| 国产综合色在线| 国产日韩精品电影| 国产视频在线观看一区| 国产精品一区二区三区成人| 欧美午夜免费| 国产精品乱子久久久久| 国产精品国产馆在线真实露脸| 欧美日韩久久精品| 欧美手机在线视频| 欧美午夜视频在线观看| 国产精品yjizz| 国产精品久久久久久久久免费桃花 | 久久久亚洲精品一区二区三区| 欧美在线观看视频| 欧美伊人精品成人久久综合97| 欧美亚洲一区| 久久精品一区二区三区四区| 久久精品亚洲一区| 免费亚洲网站| 欧美日韩精品一区视频| 欧美视频一二三区| 国产精品久久久久免费a∨| 国产精品久久久久久久久久久久久 | 亚洲自拍另类| 欧美专区在线| 蜜臀91精品一区二区三区| 欧美不卡在线| 亚洲精品欧美日韩专区| 一区二区三区日韩欧美精品| 亚洲一区二区三区在线观看视频 | 久久午夜激情| 亚洲欧洲综合另类在线| 一区二区三区色| 久久精品成人| 欧美日韩国产成人| 国产一区二区在线观看免费播放| 极品av少妇一区二区| 亚洲毛片一区二区| 欧美伊人久久| 亚洲国产精品视频一区| 亚洲午夜性刺激影院| 久久精品国产96久久久香蕉| 欧美激情亚洲自拍| 国产午夜精品全部视频播放| 亚洲国产精品热久久| 亚洲欧美成人| 亚洲第一在线视频| 午夜精品久久久久久久99黑人| 久久一二三区| 国产女精品视频网站免费| 亚洲激情av| 久久精品一区蜜桃臀影院| 亚洲精品久久久久久久久久久| 午夜久久资源| 欧美午夜精品理论片a级按摩| 经典三级久久| 亚洲欧美久久久久一区二区三区| 欧美xart系列在线观看| 亚洲男人的天堂在线| 欧美成年人视频网站| 国内精品久久久久久| 亚洲在线观看| 亚洲美女毛片| 老色批av在线精品| 黄色日韩网站|