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

Note of Justin

關于工作和讀書的筆記

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

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53385
  • 排名 - 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>
            欧美成人嫩草网站| 亚洲老板91色精品久久| 亚洲精品乱码久久久久久| 9人人澡人人爽人人精品| 国产一区视频观看| 国产精品一区二区久久国产| 欧美精品黄色| 欧美日韩精品一区二区三区四区| 久久综合九色综合久99| 午夜欧美电影在线观看| 亚洲无线视频| 久久精品国产99国产精品| 欧美一区三区二区在线观看| 欧美在线视频a| 欧美mv日韩mv国产网站| 欧美精品v日韩精品v韩国精品v | 狠狠色2019综合网| 国内激情久久| 亚洲精品日韩欧美| 亚洲图片在区色| 久久午夜精品一区二区| 91久久在线| 亚洲欧美另类在线观看| 六月天综合网| 国产婷婷精品| 亚洲一区二区三区高清不卡| 久久午夜精品| 午夜欧美视频| 国产精品青草综合久久久久99| 亚洲电影在线| 久久精品视频免费| 夜夜嗨av一区二区三区免费区| 久久久久久久久久码影片| 久久夜色精品国产噜噜av| 免费久久99精品国产自| 欧美日韩视频在线| 亚洲人永久免费| 美女国产一区| 久久久女女女女999久久| 国产精品美女一区二区| 亚洲巨乳在线| 亚洲精品之草原avav久久| 麻豆精品视频| 亚洲国产成人精品久久| 女人色偷偷aa久久天堂| 久久综合福利| 亚洲人成人99网站| 亚洲人成网站777色婷婷| 欧美成人免费观看| 一本久久精品一区二区| 韩国成人精品a∨在线观看| 亚洲精品乱码久久久久久按摩观| 久久亚洲影音av资源网| 在线观看福利一区| 亚洲第一黄色网| 欧美性猛交一区二区三区精品| 西瓜成人精品人成网站| 欧美一区二区三区免费观看| 在线观看视频欧美| 亚洲狼人综合| 在线成人激情黄色| 亚洲三级电影在线观看| 国产午夜精品理论片a级探花| 裸体丰满少妇做受久久99精品 | 亚洲一级黄色| 欧美一区二区视频97| 91久久极品少妇xxxxⅹ软件| 亚洲视频综合| 亚洲欧洲免费视频| 亚洲欧美综合国产精品一区| 亚洲人成网站影音先锋播放| 欧美伊人久久久久久午夜久久久久| 亚洲人成在线播放| 欧美一区二区三区在线| 亚洲午夜激情| 欧美日韩精品一区| 男女精品网站| 激情久久久久久| 久久九九热re6这里有精品 | 欧美午夜宅男影院在线观看| 欧美激情按摩在线| 亚洲乱码精品一二三四区日韩在线| 欧美一区二区三区在线观看视频| 亚洲一区二区三区四区五区黄 | 在线视频精品一区| 欧美jizzhd精品欧美喷水| 欧美激情精品久久久久久久变态| 亚洲人成在线播放| 欧美日韩欧美一区二区| 99视频一区二区| 欧美一区二区私人影院日本 | 激情久久一区| 欧美国产91| 亚洲欧美日韩区| 欧美高清一区二区| 国产精品视频| 亚洲欧洲日本一区二区三区| 一区二区国产在线观看| 亚洲一级一区| 一区二区视频免费在线观看 | 亚洲一区中文| 亚洲国产天堂久久国产91| 亚洲精品欧洲| 欧美性一区二区| 久久久久亚洲综合| 在线亚洲激情| 亚洲国产一区二区a毛片| 午夜在线不卡| 在线性视频日韩欧美| 亚洲第一黄色网| 禁久久精品乱码| 国语自产精品视频在线看一大j8| 国产精品久久久久久久app| 免费观看30秒视频久久| 久久久国产一区二区| 亚洲一区二区三区精品在线观看| 国产综合久久久久影院| 国产伦精品一区二区三区免费迷 | 欧美成年人在线观看| 99视频超级精品| 国产一区二区三区的电影| 欧美日韩一区在线| 欧美日韩国产区一| 欧美激情亚洲精品| 欧美大成色www永久网站婷| 久久久www成人免费精品| 性欧美长视频| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲欧美成aⅴ人在线观看| 日韩一级在线| 亚洲一区二区视频| 欧美影院在线| 欧美成年人视频网站欧美| 亚洲黄色在线视频| 这里只有视频精品| 久久久久久久一区二区三区| 欧美阿v一级看视频| 欧美日韩国产不卡| 一区视频在线| 中文国产一区| 欧美黄色一级视频| 午夜精品区一区二区三| 欧美成人高清| 黄色在线一区| 欧美在线视频网站| 亚洲精品综合在线| 美女国产一区| 欲色影视综合吧| 久久久久久免费| 欧美一区二区三区免费看| 国产精品久久久久久超碰| 99精品国产热久久91蜜凸| 久久精品人人爽| 亚洲欧美日韩区| 国产日产亚洲精品系列| 夜夜嗨av一区二区三区网页 | 久久―日本道色综合久久| 一区二区三区三区在线| 欧美日韩国产综合视频在线| 亚洲国产你懂的| 亚洲国产乱码最新视频| 久久综合给合久久狠狠色| 韩国av一区二区三区在线观看| 久久国产精品电影| 久久久噜噜噜久久中文字幕色伊伊| 国产一区二区三区高清在线观看| 欧美亚洲在线播放| 欧美在线免费播放| 亚洲激情在线播放| 国模吧视频一区| 最新国产精品拍自在线播放| 美女91精品| 欧美日韩日本国产亚洲在线| 午夜精品福利在线观看| 欧美一区免费视频| 亚洲美女黄色| 亚洲视频一二| 在线日本成人| 亚洲一区999| 亚洲欧洲一区二区三区久久| 99re热精品| 在线观看成人网| 亚洲一区二区在| 日韩亚洲欧美中文三级| 欧美一区二区性| 亚洲一区二区三区在线视频| 久久精品一区二区三区不卡| 夜夜夜精品看看| 美脚丝袜一区二区三区在线观看 | 久久躁日日躁aaaaxxxx| 欧美色图五月天| 免费成人你懂的| 国产一区二区三区黄视频| 亚洲图色在线| 欧美成人午夜| 你懂的国产精品永久在线| 国产一区二区三区在线观看精品| 亚洲午夜精品久久久久久app| 一本色道综合亚洲| 欧美日韩一区在线播放|