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

Note of Justin

關于工作和讀書的筆記

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

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53598
  • 排名 - 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 閱讀(1404) 評論(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>
            午夜精品免费| 日韩午夜av| 亚洲小视频在线| 欧美gay视频激情| 欧美午夜在线| 亚洲国产天堂久久综合网| 欧美一区二区三区视频在线观看| 日韩视频中文| 欧美精品麻豆| 一区二区三区四区五区在线| 亚洲风情亚aⅴ在线发布| 久久久一二三| 亚洲动漫精品| 欧美成人一区二区三区在线观看| 久久精品国产成人| 在线精品国产欧美| 欧美成人免费全部| 欧美福利电影网| 99国产精品视频免费观看| 欧美激情亚洲自拍| 欧美激情在线免费观看| 亚洲天堂黄色| 午夜精品国产精品大乳美女| 国产亚洲精品自拍| 美日韩丰满少妇在线观看| 久久久久久久性| 亚洲精选国产| 亚洲视频成人| 国户精品久久久久久久久久久不卡| 久久九九免费视频| 开心色5月久久精品| 野花国产精品入口| 亚洲欧美国产另类| 在线成人亚洲| 日韩一级裸体免费视频| 国产精品久久中文| 久久资源在线| 欧美日本一区| 免费黄网站欧美| 欧美精品少妇一区二区三区| 亚洲欧美国产高清va在线播| 亚洲欧美色一区| 一区二区三区亚洲| 亚洲欧洲偷拍精品| 国产欧美日本在线| 欧美成人免费一级人片100| 久久久国产亚洲精品| 亚洲精品永久免费精品| 亚洲一区视频| 亚洲精品一区二区网址| 亚洲国产一区二区精品专区| 国产精品一卡二| 亚洲国产一区二区三区a毛片| 欧美日韩第一区日日骚| 久久男人av资源网站| 毛片av中文字幕一区二区| 亚洲免费在线播放| 欧美高清在线观看| 久久综合狠狠综合久久综合88| 国产精品美女| 亚洲人成7777| 亚洲国产合集| 亚洲免费在线电影| 一区二区三区视频在线| 久久综合久久美利坚合众国| 欧美制服丝袜第一页| 欧美日韩国产专区| 欧美mv日韩mv国产网站| 国产一区二区在线观看免费| 一区二区三区视频在线 | 亚洲精品视频免费| 欧美影院视频| 午夜在线视频一区二区区别| 欧美激情四色 | 国产精品亚洲综合一区在线观看| 亚洲成人资源网| 国产一区二区三区自拍| 99精品视频一区| 午夜精品视频在线| 国产日韩精品一区二区浪潮av| 亚洲免费视频成人| 久久九九热免费视频| 国产日韩欧美中文| 午夜欧美精品| 久久久久久9| 国产主播一区二区三区| 欧美在线观看一区二区| 欧美一级免费视频| 国产婷婷成人久久av免费高清 | 中文有码久久| 欧美激情性爽国产精品17p| 欧美韩日亚洲| 亚洲精品婷婷| 欧美精品系列| 亚洲天堂av高清| 亚洲欧美电影在线观看| 国产精品毛片一区二区三区| 亚洲专区一二三| 欧美一区二区在线视频| 国产日韩欧美制服另类| 麻豆成人小视频| 亚洲人人精品| 久久久久一区二区| 欧美人与禽性xxxxx杂性| 亚洲欧美日韩精品久久久久| 久久久亚洲高清| 亚洲第一网站免费视频| 免费日韩av电影| 日韩视频亚洲视频| 亚洲欧美日韩精品久久奇米色影视| 国产精品美女| 久久精品最新地址| 亚洲高清久久| 性高湖久久久久久久久| 狠狠入ady亚洲精品经典电影| 久久综合色天天久久综合图片| 欧美激情一区| 欧美一站二站| 亚洲精品一区二区三区四区高清| 欧美色中文字幕| 久久久久久久综合狠狠综合| 亚洲免费av网站| 中文网丁香综合网| 精品不卡在线| 国产欧美精品一区aⅴ影院| 欧美精品xxxxbbbb| 久久精品国产亚洲a| 日韩一区二区精品在线观看| 久久久综合网| 亚洲性视频网址| 国产一区二区在线观看免费| 欧美va天堂| 在线午夜精品自拍| 欧美好吊妞视频| 久久久久欧美精品| 亚洲一区二区免费| 亚洲国产一区二区三区a毛片| 欧美午夜在线观看| 久久青草欧美一区二区三区| 欧美一区二区三区在| 99国内精品久久| 欧美国产日韩二区| 久久久久久电影| 午夜精品久久久久久| 91久久在线| 一区二区三区在线观看国产| 国产精品美女主播在线观看纯欲| 欧美刺激午夜性久久久久久久| 久久www成人_看片免费不卡| 亚洲欧美中文字幕| 欧美一级视频一区二区| 欧美一区二区三区婷婷月色 | 午夜精品视频在线| 99国产精品视频免费观看一公开| 国内成+人亚洲| 国产欧美日韩在线视频| 欧美午夜精彩| 欧美日韩精品在线视频| 欧美高清视频一区二区| 久久婷婷国产综合国色天香| 久久精品91| 午夜视频久久久| 午夜视频在线观看一区| 亚洲一区中文字幕在线观看| 一本久道久久久| 99亚洲精品| 亚洲天堂av在线免费观看| 99精品99久久久久久宅男| 亚洲毛片av| 亚洲成色精品| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲成色www久久网站| 欧美国产日韩一区二区三区| 亚洲第一精品夜夜躁人人爽| 亚洲第一福利社区| 亚洲国产91| 亚洲精品一区二区三区在线观看 | 在线播放精品| 亚洲国产精品视频一区| 亚洲国产黄色片| 亚洲精品美女免费| 一区二区日韩精品| 亚洲欧美激情四射在线日| 性感少妇一区| 久久中文字幕一区二区三区| 老司机精品福利视频| 裸体丰满少妇做受久久99精品| 另类av导航| 亚洲国产精品激情在线观看| 一本在线高清不卡dvd| 亚洲无玛一区| 久久不射电影网| 欧美电影免费观看高清完整版| 欧美视频一区| 国产偷国产偷亚洲高清97cao| 精品动漫3d一区二区三区| 99视频一区| 久久久免费观看视频| 亚洲第一伊人| 午夜精品久久久久久久男人的天堂 |