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

OnTheWay2012
埋葬昨天的我,迎來重生的我!
posts - 15,  comments - 89,  trackbacks - 0
周五晚上的時候在看Boost的源碼的時候發現了shared_ptr有一個很好用的功能,該功能的代碼示例如下:
boost::shared_ptr<int> pInt(new int(0));
if (pInt)
.
.
.
從上述代碼中可以看出,shared_ptr能夠模擬內置指針的功能。我很好奇shared_ptr是如何實現的這個功能,然后就找到了shared_ptr的源代碼看了看,結果發現在VC9的編譯環境下,shared_ptr不是采用重載bool操作符來實現的,為什么不采用重載bool操作符來實現呢?用一下代碼說明:
//如果采用重載bool操作符的形式來實現的話,會存在以下的一些問題,這些問題可以總結為“在不該使用的地方使用了隱含的類型轉換”
shared_ptr<int> pInt(new int(0));
int n = pInt;//如果采用重載布爾的方法,這句明顯應該是錯誤的語句就會編譯通過
那么,Boost采用的方法是什么方法呢?Boost所采用的方法的是:
 typedef T * (this_type::*unspecified_bool_type)() const;   //Ln 1

    
operator unspecified_bool_type() const // never throws  Ln2
{
        
return px == 0? 0&this_type::get; //Ln3
    }
當第一次看到這三行代碼的時候,我被震驚了!
我看了半天都不知道這三行代碼到底是什么意思!周五晚上我用baidu,google搜了半天,終于發現Ln1不就是自己以前用過的指向成員函數的指針嗎?!我真蠢,看了半天還是沒看明白。那么一個問題解決了,另外一個更無法理解的問題出現了:為什么在寫下
if(pInt)
Ln2和Ln3所定義的函數會被調用!!!我找呀找,還是不明白!我問google呀,還是不明白!我問baidu呀,還是不明白!
這個問題,折磨了我兩天,今天晚上的時候,有打開VC9,有一次看到這段代碼,突然就明白了。
在Ln1定義了一個類型(指向成員函數指針);
在Ln2和Ln3定義了一個函數,該函數是一個類型轉換函數,把shared_ptr,轉換為一個指向成員函數的指針。
舉一個簡單的類型轉換函數的例子:
class A
{
public:
     
operator int()
     
{
          
return 0;
     }

}


void Test(int a)
{
     cout
<<a<<endl;
}


void main()
{
     A a;
     Test(a);
//這里調用的是類型轉換函數
}
至于為什么這種方法比重載bool好,是因為指向成員函數的指針很少能夠被編譯器用來做隱含的類型轉換。

現在終于明白了上面的代碼。雖然代碼里面的技術我都用過,但是當時為什么沒有像明白呢?!
我分析原因有兩條:
1. 最近好久沒有寫過代碼,生疏了。這是次要原因。
2.對C++缺乏了解。這是主要原因。


在解決這個問題的時候用google搜到了一個老外發的貼,大致內容如下:
每當我覺得對C++有所了解或者掌握它的秘密的時候,我總發現一些改變我看發的事情。
....

另外一個老外回答的時候用了一句話。I know the feelings.

現在,我終于也有第一個老外的感覺了。
posted on 2010-12-05 18:56 OnTheWay 閱讀(2348) 評論(4)  編輯 收藏 引用 所屬分類: 個人感悟

FeedBack:
# re: Why I am so stupid?
2010-12-05 23:19 | right
最近不知道怎么搞的,如果有人跟我研究這些C++的高級語法高級特性時,我總是有種想潑冷水的沖動。不過想想自己也是這么走過來的,也就逐漸釋然了。  回復  更多評論
  
# re: Why I am so stupid?
2010-12-06 08:44 | Sosi
Boost 乃一大寶藏。。。  回復  更多評論
  
# re: Why I am so stupid?
2010-12-06 10:27 | 空明流轉
寫boost的人是挖空心思從Spec里面想摳出點東西拿來用。

那個令人發指的typeof更是連編譯器bug都用上了。

你要是挖空心思,其實也是可以的。。。  回復  更多評論
  
# re: Why I am so stupid?
2010-12-13 17:53 | crossgate
不覺得這個是C++的高級語法特性,覺得是比較常規的,實用的特性。

如果if判斷的時候,統一用 if (!pInt),會更合適。重載!操作符,會更容易,也更一般化一些。  回復  更多評論
  

<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

友情連接

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本色道久久88亚洲综合88| 日韩午夜剧场| 女人香蕉久久**毛片精品| 久久久久国产精品人| 亚洲片区在线| 午夜精品久久久久| 一本大道久久a久久精品综合| 在线观看91久久久久久| 欧美黄色一区| 欧美体内谢she精2性欧美 | 欧美一区深夜视频| 一本色道久久综合亚洲精品婷婷| 亚洲性视频网站| 日韩视频不卡| 久久爱91午夜羞羞| 亚洲小视频在线观看| 麻豆91精品91久久久的内涵| 亚洲国产美女精品久久久久∴| 亚洲精品中文字幕在线| 国模私拍一区二区三区| 亚洲综合国产激情另类一区| 99riav国产精品| 久久亚洲精选| 免费成人高清视频| 精品99一区二区| 亚洲综合导航| 欧美一区二区在线免费播放| 国产精品欧美一区二区三区奶水| 欧美激情aⅴ一区二区三区| 能在线观看的日韩av| 一区二区三区产品免费精品久久75| 久久蜜桃资源一区二区老牛 | 欧美xart系列高清| 亚洲欧洲日本专区| 欧美另类在线观看| 一区二区av在线| 欧美一级专区| 欧美成人精品在线观看| 亚洲电影中文字幕| 欧美精品在线观看播放| 夜夜嗨av一区二区三区网页| 国产一区二区三区四区老人| 亚洲女人天堂成人av在线| 久久久久久久综合狠狠综合| 亚洲国产精品久久久久秋霞蜜臀| 欧美激情精品久久久久久大尺度| 亚洲理论电影网| 免费日韩av电影| 亚洲免费视频在线观看| 国产视频精品网| 欧美精品二区| 久久九九久久九九| 日韩亚洲精品电影| 欧美高清视频一二三区| 午夜综合激情| 亚洲深夜福利视频| 亚洲日本成人在线观看| 黑人一区二区三区四区五区| 亚洲欧美卡通另类91av | 欧美老女人xx| 久久久久网站| 欧美黑人国产人伦爽爽爽| 欧美中文字幕视频| 欧美一区二区三区视频在线观看| 亚洲精品中文字幕有码专区| 国产欧美日韩精品一区| 国产精品婷婷| 国产一区二区三区日韩| 国产精品青草综合久久久久99 | 亚洲高清视频在线| 国产一区二区精品久久91| 男女视频一区二区| 久久久激情视频| 久久精品成人| 免费在线欧美黄色| 欧美日韩亚洲免费| 国产精品美女www爽爽爽视频| 国产精品二区三区四区| 国产一区亚洲| 亚洲欧洲日产国产网站| 亚洲婷婷国产精品电影人久久| 亚洲一区二区三区免费观看| 午夜在线精品偷拍| 欧美第十八页| 亚洲欧美www| 欧美成人视屏| 国产欧美一区二区白浆黑人| 在线精品视频在线观看高清| 亚洲无限乱码一二三四麻| 久久精品首页| 亚洲欧美不卡| 欧美激情综合五月色丁香| 国产精品另类一区| 亚洲国产日韩一区| 久久综合久久综合这里只有精品| 亚洲国产小视频在线观看| 香蕉久久夜色精品| 欧美亚洲在线| 亚洲自拍偷拍一区| 国产精品第13页| 亚洲一区二区三区中文字幕在线 | 在线亚洲欧美视频| 亚洲精品久久久久久下一站| 久久天堂成人| 激情久久久久久久| 欧美综合二区| 欧美一区二区三区视频免费播放| 国产精品久久久999| 亚洲女女女同性video| 一本大道久久精品懂色aⅴ| 欧美日韩一区在线观看视频| 夜夜狂射影院欧美极品| 亚洲视频免费观看| 欧美激情影音先锋| 亚洲激情女人| 国产精品久久影院| 久久久久国产精品一区| 亚洲第一免费播放区| 最新国产成人av网站网址麻豆| 欧美美女日韩| 久久爱www| 欧美第一黄色网| 欧美在线观看一二区| 欧美成人一区二区在线| 午夜久久99| 免费在线观看日韩欧美| 亚洲永久网站| 欧美**人妖| 免费在线日韩av| 极品av少妇一区二区| 亚洲欧美日韩国产一区二区三区| 亚洲精华国产欧美| 久久综合五月| 久久久欧美精品sm网站| 国产精品久久波多野结衣| 欧美成人tv| 亚洲国产老妈| 蜜桃伊人久久| 欧美黄色免费| 亚洲三级影片| 蜜臀av在线播放一区二区三区| 久久久久国内| 1024日韩| 麻豆精品在线视频| 久久中文久久字幕| 亚洲高清在线精品| 欧美久久久久久久久| 亚洲精品一区二区三区av| 一本久道久久综合中文字幕| 欧美黄在线观看| 亚洲一区不卡| 久久香蕉国产线看观看网| 亚洲国产成人av好男人在线观看| 久久一二三区| 亚洲校园激情| 欧美激情精品久久久久久久变态 | 激情成人中文字幕| 欧美日韩精品一区视频| 亚洲一区二区三区欧美| 欧美激情一区二区三区不卡| 夜夜嗨av色综合久久久综合网| 欧美视频在线观看一区| 久久影视精品| 亚洲欧美在线观看| 亚洲精品国产精品国自产在线| 亚洲欧美在线一区| 亚洲精品一二| 国内自拍一区| 国产伦精品一区二区三区高清| 久久婷婷久久| 久久国产精品久久w女人spa| 亚洲美女中出| 日韩视频不卡| 亚洲精品社区| 亚洲国产小视频在线观看| 猛干欧美女孩| 久久午夜激情| 可以看av的网站久久看| 久久av老司机精品网站导航| 一本一道久久综合狠狠老精东影业| 在线观看中文字幕不卡| 极品av少妇一区二区| 国产日本亚洲高清| 韩国一区二区三区美女美女秀| 国产精品自拍视频| 国内外成人免费激情在线视频| 国产日韩三区| 在线精品视频一区二区三四| 伊人成人在线| 日韩一级片网址| 亚洲午夜在线观看视频在线| 亚洲图片欧美午夜| 欧美亚洲免费电影| 久久女同互慰一区二区三区| 久久久国产精品一区二区中文| 久久午夜羞羞影院免费观看| 欧美mv日韩mv国产网站| 亚洲日本欧美| 先锋影音久久| 欧美日韩在线电影|