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

隨筆 - 45  文章 - 129  trackbacks - 0
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

專注于C++ P2P STL GP OpenSource等
Google

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

相冊(cè)

朋友

  • .NET

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Partial Template Specialization
顧名思義,模版偏特化就是對(duì)模版進(jìn)行特化的意思。

舉個(gè)例子:
namespace?SHFTest
{
????template
<
????????????
class?PLA,
????????????
class?PLB
????????????
>
????
class?PLClass
????
{
????????
//
????????
//?一般實(shí)現(xiàn)
????????
//
????public:
????????PLClass()
{};
????????
~PLClass(){};
????????
void?FuncA()
????????
{
????????}

????}
;

????typedef?myPLA;
????typedef?myPLB;

????
//
????
//?單參數(shù)特化實(shí)現(xiàn),參數(shù)A
????
//
????template<class?PLA>
????
class?PLClass<PLA,myPLB>
????
{
????????
//
????????
//?特化實(shí)現(xiàn)
????????
//
????????PLClass(){};
????????
~PLClass(){};
????????
void?FuncA()
????????
{
????????}

????}
;

????
//
????
//?單參數(shù)特化實(shí)現(xiàn),參數(shù)B
????
//
????template<class?PLB>
????
class?PLClass<myPLA,PLB>
????
{
????????
//
????????
//?特化實(shí)現(xiàn)
????????
//
????????PLClass(){};
????????
~PLClass(){};
????????
void?FuncA()
????????
{
????????}

????}
;

????
//
????
//?雙參數(shù)特化實(shí)現(xiàn)
????
//
????template<>
????
class?PLClass<myPLA,myPLB>
????
{
????????
//
????????
//?特化實(shí)現(xiàn)
????????
//
????????PLClass(){};
????????
~PLClass(){};
????????
void?FuncA()
????????
{
????????}

????}
;
}

?第一段代碼是一個(gè)普通的template class,支持兩個(gè)模板參數(shù)。

假如我對(duì)于某種對(duì)象,需要做特殊化的處理,這樣就要用到模版偏特化了:
例如第二段代碼,第三段代碼,第四段代碼分別對(duì)參數(shù)A,參數(shù)B和兩個(gè)參數(shù)做了偏特化。

編譯器會(huì)幫你的代碼自動(dòng)匹配到最好的模板上面進(jìn)行實(shí)例化。

這個(gè)有點(diǎn)類似于函數(shù)的重載,但是和重載是不一樣的,根據(jù)《深入探索C++對(duì)象模型》中的描述,函數(shù)重載會(huì)在運(yùn)行時(shí)發(fā)生,利用函數(shù)對(duì)象忠的vtable來實(shí)現(xiàn)的。而模版偏特化發(fā)生在編譯期間,由編譯器來自動(dòng)匹配完成的。沒有運(yùn)行時(shí)的開銷。

注意幾點(diǎn):
你能對(duì)已經(jīng)做過偏特化的class忠的成員函數(shù)做偏特化,而你想單獨(dú)對(duì)某個(gè)函數(shù)做偏特化這是不允許的。請(qǐng)看以下例子:
這樣是被允許的:
namespace?SHFTest
{
????template
<
????????????
class?PLA,
????????????
class?PLB
????????????
>
????
class?PLClass
????
{
????????
//
????????
//?一般實(shí)現(xiàn)
????????
//
????public:
????????PLClass()
{};
????????
~PLClass(){};
????????
void?FuncA(){};
????}
;

????typedef?myPLA;
????typedef?myPLB;

????
//
????
//?單參數(shù)特化實(shí)現(xiàn),參數(shù)A
????
//
????template<class?PLA>
????
class?PLClass<PLA,myPLB>
????
{
????????
//
????????
//?特化實(shí)現(xiàn)
????????
//
????????PLClass(){};
????????
~PLClass(){};
????????
void?FuncA();
????}
;

????template
<class?PLA>
????
void?PLClass<PLA,myPLB>::FuncA()
????
{

????}

}
而下面的這種情況是不允許的,編譯不過的:
namespace?SHFTest
{
????template
<
????????????
class?PLA,
????????????
class?PLB
????????????
>
????
class?PLClass
????
{
????????
//
????????
//?一般實(shí)現(xiàn)
????????
//
????public:
????????PLClass()
{};
????????
~PLClass(){};
????????
void?FuncA();
????}
;

????typedef?myPLA;
????typedef?myPLB;

????template
<class?PLA>
????
void?PLClass<PLA,myPLB>::FuncA()
????
{

????}

}
當(dāng)然直接偏特化namespace級(jí)別的函數(shù)也是不被允許的。你可以對(duì)這些函數(shù)做重載。這就意味著你只能更改函數(shù)的參數(shù)列表而不能改變函數(shù)的返回類型等。
請(qǐng)看以下代碼:
template?<class?T,?class?U>?T?Fun(U?obj);?
//primary?template
template?<class?U>?void?Fun<void,?U>(U?obj);?
//illegal?partial?specialization
template?<class?T>?T?Fun?(Window?obj);?
//legal?(overloading)

寫得不好,還請(qǐng)大家指正。

FeedBack:
# re: 模版偏特化--Partial Template Specialization(《Modern C++ Design讀書筆記二》) 2007-09-16 15:57 張衛(wèi)華
修改函數(shù)的返回值和參數(shù),只是覆蓋,不是重載  回復(fù)  更多評(píng)論
  
# re: 模版偏特化--Partial Template Specialization(《Modern C++ Design讀書筆記二》) 2008-01-07 14:23 Gino
> 這個(gè)有點(diǎn)類似于函數(shù)的重載,但是和重載是不一樣的,根據(jù)《深度探索C++對(duì)
> 象模型》中的描述,函數(shù)重載會(huì)在運(yùn)行時(shí)發(fā)生,利用函數(shù)對(duì)象忠的vtable來
> 實(shí)現(xiàn)的。

函數(shù)重載為什么會(huì)在運(yùn)行時(shí)發(fā)生?

我很疑惑你的看法。我沒有在《深度探索C++對(duì)象模型》中找到對(duì)應(yīng)的話,(幾個(gè)月前剛看過,也許我漏掉了。)

重載只是一個(gè)對(duì)C++程序員來講有意義的名詞,但解釋后的C代碼中,根本就沒有這個(gè)概念。

重載函數(shù)/方法會(huì)被靜態(tài)綁定(編譯期綁定)。  回復(fù)  更多評(píng)論
  
# re: 模版偏特化--Partial Template Specialization(《Modern C++ Design讀書筆記二》) 2008-01-08 11:36 風(fēng)舞影天
@Gino
我認(rèn)為樓主說的應(yīng)該是繼承而非重載,估計(jì)他把重載和繼承的概念混淆了或是記錯(cuò)了  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              午夜在线一区二区| 欧美久久在线| 免费看的黄色欧美网站| 欧美一区二区精品| 亚洲欧美在线网| 性欧美videos另类喷潮| 亚洲视频在线观看视频| 亚洲天堂成人在线观看| 午夜视频在线观看一区| 久久久欧美精品sm网站| 久久午夜精品| 欧美大尺度在线| 亚洲日本欧美在线| 夜夜嗨av一区二区三区四季av| 亚洲深夜福利视频| 久久久久成人精品免费播放动漫| 久久在线观看视频| 欧美精品乱人伦久久久久久 | 亚洲伊人网站| 欧美一区二区三区在线播放| 狂野欧美激情性xxxx| 欧美绝品在线观看成人午夜影视| 欧美性久久久| 激情久久综合| 夜夜嗨网站十八久久| 久久激情视频免费观看| 91久久精品美女| 久久精品首页| 国产精品老牛| 亚洲最新合集| 久久一二三区| 亚洲一区www| 欧美高清影院| 伊人成人网在线看| 午夜视频久久久久久| 9l视频自拍蝌蚪9l视频成人| 亚洲无线观看| 另类人畜视频在线| 欧美午夜一区二区福利视频| 尤物九九久久国产精品的特点| 99精品久久| 免费成人你懂的| 欧美一区二区视频97| 欧美日韩一二三区| 亚洲国产精品久久人人爱蜜臀 | 欧美一区二区三区免费视频| 亚洲三级免费电影| 久久久久久自在自线| 国产精品三级视频| 亚洲一品av免费观看| 亚洲国产日韩一区二区| 久久精品一区二区国产| 国产精品稀缺呦系列在线| 亚洲精选在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲欧美日韩国产一区二区三区| 欧美日韩精品一区二区天天拍小说 | 久久精品国产久精国产爱| 国产精品视频精品视频| 一区二区电影免费观看| 亚洲国产婷婷香蕉久久久久久| 久久久久九九视频| 在线成人激情黄色| 欧美成人精品在线播放| 可以看av的网站久久看| 亚洲国产精品一区二区尤物区| 免费欧美在线视频| 欧美成年人在线观看| 亚洲久久视频| 日韩视频精品| 国产精品无码永久免费888| 午夜久久tv| 欧美一区二区三区免费大片| 国内精品伊人久久久久av一坑| 久久久久久亚洲综合影院红桃 | 亚洲精品美女在线观看| 欧美人成网站| 亚洲欧美一区在线| 欧美一区二区高清| 韩日精品视频| 欧美国产日韩精品免费观看| 91久久线看在观草草青青| 美女999久久久精品视频| 久久国产精品99精品国产| 狠狠操狠狠色综合网| 欧美激情精品久久久久久黑人 | 欧美日韩视频| 午夜综合激情| 麻豆成人在线播放| 这里只有精品视频| 性欧美18~19sex高清播放| 狠狠干综合网| 99热在这里有精品免费| 国产精品免费一区二区三区在线观看| 欧美中文字幕在线播放| 久久久久九九视频| 亚洲视频1区| 久久久999精品视频| 一区二区精品在线| 久久久精品动漫| 一本色道久久综合| 欧美一区二区成人| 99在线|亚洲一区二区| 校园春色国产精品| 一区二区三区 在线观看视频| 午夜在线电影亚洲一区| 99综合电影在线视频| 久久精品综合| 欧美一级一区| 欧美午夜精品久久久久久久| 蜜桃av噜噜一区| 国产伦精品一区二区三| 亚洲理论在线| 亚洲人成网站精品片在线观看| 亚洲综合视频一区| 亚洲图片欧洲图片日韩av| 美日韩精品视频| 久久免费视频观看| 国产精品视频久久久| 亚洲美女av黄| 日韩一级大片在线| 麻豆成人av| 欧美成人精品不卡视频在线观看 | 国产精品美女久久久久aⅴ国产馆| 欧美1区3d| 在线播放豆国产99亚洲| 久久成人18免费网站| 欧美一区亚洲二区| 国产精品进线69影院| 99视频一区二区| 亚洲午夜免费视频| 国产精品xxxav免费视频| 亚洲精品社区| 一区二区三区国产| 欧美精品系列| 99视频精品全部免费在线| 一区二区三区视频在线观看| 欧美福利一区| 亚洲国产日韩一级| 99精品99| 国产精品国产成人国产三级| 99精品黄色片免费大全| av成人国产| 国产精品久久久久久久久借妻| 一区二区三区精品视频| 欧美在线观看视频在线| 亚洲黄色影院| 男人的天堂成人在线| 欧美激情在线有限公司| 亚洲精品一区在线| 欧美日韩国产精品专区| 日韩网站在线| 亚洲欧美日本精品| 国产精品伊人日日| 欧美中文字幕在线视频| 久久香蕉国产线看观看av| 怡红院精品视频| 欧美精品一区在线发布| 一本色道久久综合亚洲精品婷婷 | 欧美日韩国产黄| 亚洲视频一二三| 久久精品日韩| 亚洲人成绝费网站色www| 欧美日一区二区三区在线观看国产免| 中文一区字幕| 免费一级欧美在线大片| 亚洲手机成人高清视频| 国产偷国产偷精品高清尤物| 久久伊人亚洲| 国产精品99久久久久久久vr | 一区二区久久久久久| 欧美一区二区免费| 在线观看的日韩av| 欧美体内she精视频| 久久国产婷婷国产香蕉| 亚洲国产精品va| 小黄鸭视频精品导航| 亚洲激情女人| 国产伦精品一区二区三区高清| 免费日韩成人| 欧美一区二区三区日韩视频| 亚洲精品社区| 欧美gay视频| 亚洲视频在线免费观看| 亚洲电影专区| 国产手机视频一区二区| 欧美日韩国产精品专区 | 夜夜爽www精品| 免费国产自线拍一欧美视频| 宅男噜噜噜66一区二区| 亚洲福利免费| 国产一区香蕉久久| 国产精品久久一区二区三区| 欧美精品 日韩| 麻豆国产精品777777在线 | 久久久精品一区二区三区| 亚洲小说欧美另类婷婷| 亚洲精品乱码久久久久久按摩观| 久久婷婷综合激情| 久久激情中文|