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

Note of Justin

關于工作和讀書的筆記

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53394
  • 排名 - 433

最新評論

閱讀排行榜

評論排行榜

[原創文章歡迎轉載,但請保留作者信息]
Justin 于 2010-04-26


看完以后覺得講的其實是如何用模板函數來讓拷貝構造函數和賦值運算符接受所有可能的輸入。

首先對于內建類型的對象,他們作為函數參數時,參數的類型轉換是自動發生的。比如說派生類對象的指針,如果需要,會被轉換為其父類對象的指針。
而對于智能指針,要完成類似的轉換需要編寫額外的代碼才能實現。
如書中例子所示,如果類Base是類Derived的父類,對于下面的一個模板類:
template?<typename?T>
class?SmartPointer?{
public:
???
explicit?SmartPointer(T?*?pointer);
//..
}

經管這兩個智能指針指向的對象是有繼承關系的,SmartPointer<Base>和SmartPointer<Derived>對于編譯器來說完全沒有聯系。
于是,如果一個函數聲明了接受一個SmartPointer<Base>類型的參數,就無法給它傳進一個SmartPointer<Derived>類型的指針了。

為了能夠讓智能指針對象也具備一般指針的隱式轉換能力,首先可以做的工作是改造智能指針的構造函數,讓對象生成的時候可以依照具體情況“變態”成實際需要的對象類型。好吧,那我們現在就開始做……
打住!有兩個問題需要考慮:第一是我們怎么知道智能指針構造函數的輸入參數pointer是什么類型?又怎么知道真正需要的目標類型是什么?如果不知道我們怎么寫這個構造函數?第二是就算我們知道了輸入的類型和生成的類型,有多少種這樣的搭配是SmartPointer需要接受的?如果有100對不同的類型搭配,我們就要寫100種構造函數嗎?
解決這些問題的辦法:用“模板化”的構造函數。(member function templates)
template?<typename?T>
class?SmartPointer?{
public:
???template?
<typename?U>
???SmartPointer(
const?SmartPointer<U>&?input)?:?myPointer(?input.get()?)
???{
//..
???}
???T
*?get()?const?{?return?myPointer;?}
???
//..
private:
???T
*?myPointer;
};

上面的方案個人感覺很繞,不過確實也解決了問題。
大概分析一下:
  • 其中的構造函數是一個模板函數,接受參數為U類型的對象,構造出指向T的指針。
  • 但是很明顯我們不需要一個能夠接受任意類型再生成任意類型對象的構造函數。這樣會天下大亂的。于是就有了get()對myPointer的初始化:構造函數的輸入參數input所持有的指針是可以用get()來得到的,然后有這個“get”來的指針去初始化目標對象所持有的指針,到了這一步,就和一般指針的隱式轉換沒有差別了:
    • 如果可以轉換,智能指針SmartPointer<U>就順利轉換為SmartPointer<T>;
    • 如果不能轉換,構造函數就失敗。
  • 這里的構造函數沒有explicit修飾,因此類型的轉換是隱式的。如果真有這個必要,就加上explicit,這樣就需要顯式地聲明需要進行類型轉換。
  • 當一個類沒有定義自己的構造函數時(包括賦值構造函數和拷貝構造函數),編譯器會“幫你”創建默認的構造函數。編譯器不會理睬“模板化”的構造函數,如果一個類中只有“模板化”的構造函數,它還是會繼續生產默認的構造函數。因此,如果不想讓編譯器做多余的事,就有必要自己寫好非模板化的構造函數,以此讓編譯器“閉嘴”@#¥%
posted on 2010-04-26 08:45 Justin.H 閱讀(1401) 評論(0)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本不卡影院| 国产视频在线观看一区二区| 99综合精品| 久久婷婷麻豆| 国产私拍一区| 亚洲欧美一区在线| 中国成人黄色视屏| 欧美另类99xxxxx| 亚洲人体1000| 欧美大色视频| 另类综合日韩欧美亚洲| 亚洲人成绝费网站色www| 久久综合九色| 韩国美女久久| 亚洲国产日韩欧美| 欧美一区二区三区免费视频| 99精品欧美一区二区三区| 欧美成人午夜免费视在线看片| 亚洲国产美女精品久久久久∴| 亚洲日本va午夜在线影院| 久久久中精品2020中文| 欧美在线观看网站| 国内自拍一区| 欧美1区免费| 美女精品视频一区| 日韩视频免费在线| 99国产精品久久久久老师| 欧美日韩在线播放| 亚洲一区二区在线免费观看| 一区二区三区视频免费在线观看| 欧美在线精品免播放器视频| 国内精品久久久久久久果冻传媒| 久久久久欧美精品| 日韩一级在线| 国产精品国码视频| 欧美专区福利在线| 久久在线免费| 亚洲图片欧美午夜| 羞羞答答国产精品www一本| 影音先锋久久久| 91久久国产综合久久| 另类尿喷潮videofree| 99视频一区二区三区| 亚洲欧美成人在线| 欧美在线一二三四区| 一区二区三区久久| 国产区在线观看成人精品| 亚洲二区视频| 国产亚洲视频在线| 亚洲一区二区3| 亚洲国产精品va在线看黑人| 免费中文字幕日韩欧美| 激情国产一区| 欧美日韩一区二区三区免费看 | 久久av资源网站| 亚洲经典三级| 欧美顶级大胆免费视频| 你懂的网址国产 欧美| 久久视频在线看| 国产一区二区日韩精品欧美精品| 99热在这里有精品免费| 亚洲视频你懂的| 欧美三级日韩三级国产三级| 一本久道久久综合狠狠爱| 久久九九热re6这里有精品| 欧美一级专区免费大片| 欧美一区成人| 在线视频一区观看| 久久久久看片| 亚洲免费视频网站| 你懂的国产精品| 久久久亚洲国产美女国产盗摄| 欧美激情欧美狂野欧美精品| 欧美在线视频网站| 国产精品免费在线| 男人插女人欧美| 国产精品人人做人人爽人人添| 国产精品一区二区在线观看| 欧美亚洲成人免费| 久久天堂国产精品| 狂野欧美一区| 亚洲免费成人| 亚洲亚洲精品三区日韩精品在线视频| 国产欧美一区二区三区在线看蜜臀| 亚洲一区二区毛片| 激情综合色综合久久综合| 国产性色一区二区| 99re66热这里只有精品4| 永久免费毛片在线播放不卡| 亚洲香蕉成视频在线观看| 在线一区二区日韩| 欧美激情精品久久久六区热门 | 欧美一区二区三区四区视频 | 亚洲免费av电影| 亚洲欧洲偷拍精品| 欧美成人一区二免费视频软件| 久久尤物视频| 一区二区在线免费观看| 久久精品二区亚洲w码| 久久精品亚洲精品| 国产在线视频欧美| 久久久国产成人精品| 亚洲精品在线免费观看视频| 久久久久国产精品一区二区| 国产精品一区二区在线观看| 国产精品嫩草久久久久| 欧美精品在线一区二区| 欧美精品自拍偷拍动漫精品| 欧美另类久久久品| 国产精品xxxav免费视频| 亚洲二区在线视频| 午夜视频在线观看一区二区| 亚洲激情一区二区| 亚洲成色777777在线观看影院| 免费毛片一区二区三区久久久| 亚洲影院高清在线| 亚洲小说春色综合另类电影| 久久免费视频网站| 久久久91精品| 日韩视频在线观看国产| 亚洲一区二区在线看| 欧美在线亚洲一区| 国产综合第一页| 亚洲女人av| 久久国产精品久久国产精品| 一区二区三区在线看| 卡一卡二国产精品| 亚洲免费大片| 久久精品国产99精品国产亚洲性色| 国产欧美日韩在线播放| 久久久久久久999| 亚洲理论电影网| 欧美一级欧美一级在线播放| 国一区二区在线观看| 欧美欧美全黄| 欧美中文在线观看| 99精品99久久久久久宅男| 久久精品男女| 日韩一区二区久久| 国产一区二区丝袜高跟鞋图片 | 欧美激情视频一区二区三区在线播放| 99精品视频一区| 国内久久精品视频| 欧美日韩成人综合在线一区二区| 欧美在线观看视频一区二区三区| 亚洲黄色片网站| 欧美一区二区精品在线| 亚洲精品乱码久久久久久日本蜜臀 | 久久精品国产一区二区电影| 亚洲精品人人| 在线观看日韩av先锋影音电影院| 欧美三级乱码| 能在线观看的日韩av| 日韩亚洲精品电影| 一区二区三区高清视频在线观看 | 亚洲经典三级| 麻豆91精品| 亚洲免费电影在线| 日韩一二三区视频| 国产精品女主播| 亚洲第一天堂无码专区| 一二三区精品福利视频| 国产香蕉久久精品综合网| 欧美日韩岛国| 久热这里只精品99re8久| 午夜精品久久一牛影视| 亚洲精品在线观| 欧美电影在线播放| 久久一区二区三区超碰国产精品| 欧美一级专区| 午夜精品久久久久久久| 国产精品一区二区三区免费观看| 欧美精品一区二区精品网 | 中文欧美字幕免费| 亚洲精品乱码久久久久久| 亚洲国产视频a| 亚洲国产高潮在线观看| 亚洲高清在线观看| 亚洲人成网站影音先锋播放| 亚洲第一偷拍| 亚洲精品乱码久久久久| 91久久午夜| 亚洲精选大片| 一区二区三区四区五区精品视频| 亚洲日本aⅴ片在线观看香蕉| 亚洲黄色免费| 99视频精品| 一本色道久久88精品综合| 一区二区三区黄色| 亚洲一区在线播放| 亚洲欧美中文日韩在线| 欧美一区二区播放| 久久av一区二区三区| 久久视频在线看| 欧美成人69av| 欧美了一区在线观看| 国产精品久久一区二区三区| 欧美日韩在线看| 国产九色精品成人porny| 一区二区亚洲欧洲国产日韩|