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

隨筆 - 45  文章 - 129  trackbacks - 0
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

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

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

相冊

朋友

  • .NET

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

Partial Template Specialization
顧名思義,模版偏特化就是對模版進行特化的意思。

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

????}
;

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

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

????}
;

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

????}
;

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

????}
;
}

?第一段代碼是一個普通的template class,支持兩個模板參數。

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

編譯器會幫你的代碼自動匹配到最好的模板上面進行實例化。

這個有點類似于函數的重載,但是和重載是不一樣的,根據《深入探索C++對象模型》中的描述,函數重載會在運行時發生,利用函數對象忠的vtable來實現的。而模版偏特化發生在編譯期間,由編譯器來自動匹配完成的。沒有運行時的開銷。

注意幾點:
你能對已經做過偏特化的class忠的成員函數做偏特化,而你想單獨對某個函數做偏特化這是不允許的。請看以下例子:
這樣是被允許的:
namespace?SHFTest
{
????template
<
????????????
class?PLA,
????????????
class?PLB
????????????
>
????
class?PLClass
????
{
????????
//
????????
//?一般實現
????????
//
????public:
????????PLClass()
{};
????????
~PLClass(){};
????????
void?FuncA(){};
????}
;

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

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

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

????}

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

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

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

????}

}
當然直接偏特化namespace級別的函數也是不被允許的。你可以對這些函數做重載。這就意味著你只能更改函數的參數列表而不能改變函數的返回類型等。
請看以下代碼:
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)

寫得不好,還請大家指正。
posted on 2006-12-30 17:30 CPP&&設計模式小屋 閱讀(4064) 評論(3)  編輯 收藏 引用 所屬分類: Modern C++ Design,BOOST,LOKI 、讀書筆記

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

函數重載為什么會在運行時發生?

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

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

重載函數/方法會被靜態綁定(編譯期綁定)。  回復  更多評論
  
# re: 模版偏特化--Partial Template Specialization(《Modern C++ Design讀書筆記二》) 2008-01-08 11:36 風舞影天
@Gino
我認為樓主說的應該是繼承而非重載,估計他把重載和繼承的概念混淆了或是記錯了  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              国产日韩欧美电影在线观看| 日韩亚洲精品在线| 久久免费国产| 欧美日韩免费观看一区=区三区| 国产亚洲欧美激情| 艳女tv在线观看国产一区| 欧美风情在线| 欧美日韩中文字幕| 另类春色校园亚洲| 欧美色视频在线| 亚洲电影视频在线| 欧美日韩一区成人| 在线成人小视频| 亚洲欧美日本国产有色| 亚洲黄一区二区三区| 久久国产高清| 欧美在线国产精品| 亚洲精品视频在线观看网站| 亚洲精选久久| 一区二区亚洲精品国产| 欧美在线视频导航| 欧美黄色免费| 免费久久精品视频| 国产欧美精品xxxx另类| 亚洲电影一级黄| 国产日韩欧美一区二区三区四区| 欧美激情中文字幕在线| 国产亚洲观看| 久久久精品国产免大香伊| 欧美亚洲自偷自偷| 久久www成人_看片免费不卡| 99在线精品视频| 欧美精品日韩| 亚洲色图综合久久| 欧美一区二区在线播放| 国产专区欧美精品| 久久久人成影片一区二区三区观看| 亚洲欧美日韩精品久久久| 国产精品私房写真福利视频 | 欧美一区二区三区在线观看| 欧美日韩在线观看视频| 亚洲尤物在线视频观看| 久久久九九九九| 99国产精品一区| 国产欧美一区二区三区久久 | 欧美日韩国产成人| 欧美激情一区二区三区高清视频| 精品福利av| 久久本道综合色狠狠五月| 亚洲国产精品激情在线观看| 欧美日韩免费高清一区色橹橹| 在线天堂一区av电影| 欧美激情一区二区三区在线视频观看| 99精品热6080yy久久| 国产综合久久久久久| 欧美日韩在线播放一区| 久久九九全国免费精品观看| 一区二区三欧美| 日韩一级二级三级| 欧美激情日韩| 欧美国产日韩一区二区在线观看| 午夜在线视频观看日韩17c| 亚洲精品在线视频| 91久久久一线二线三线品牌| 怡红院精品视频| 永久555www成人免费| 国产婷婷97碰碰久久人人蜜臀| 欧美三级在线视频| 欧美日韩中文另类| 国产精品国产福利国产秒拍| 欧美日韩国产成人在线观看| 欧美激情精品久久久久久免费印度| 久久视频国产精品免费视频在线| 久久精品成人欧美大片古装| 久久精选视频| 欧美99在线视频观看| 男女视频一区二区| 欧美日韩久久不卡| 国产欧美日韩三区| 在线欧美视频| 亚洲一区二区三区高清| 久久精选视频| 日韩视频免费观看高清在线视频 | 欧美手机在线| 在线观看成人av| 亚洲免费在线精品一区| 久久视频免费观看| 亚洲精品一区二区三区福利| 99精品国产在热久久下载| 午夜一级久久| 日韩一级黄色片| 久久综合给合| 伊人成人在线视频| 亚洲免费中文字幕| 亚洲靠逼com| 欧美福利网址| 91久久精品一区二区三区| 久久福利影视| 欧美亚洲视频在线看网址| 国产精品美女久久久久久久| 亚洲精品免费在线| 欧美大片免费观看在线观看网站推荐| 亚洲网站在线观看| 欧美午夜三级| 欧美一级片一区| 欧美在线视频免费观看| 国产精品日韩欧美大师| 亚洲欧美久久久| 亚洲欧美日韩成人高清在线一区| 欧美性色视频在线| 欧美在线观看视频一区二区| 亚洲一区免费| 狠狠色伊人亚洲综合网站色| 欧美在线一级视频| 久热精品视频在线观看一区| 亚洲国产日韩欧美在线99| 亚洲国产精品第一区二区| 久久精品女人| 一区二区三区偷拍| 亚洲欧美网站| 亚洲精品九九| 欧美专区在线观看| 亚洲精品日韩在线| 亚洲欧美视频一区二区三区| 亚洲国产另类久久精品| 一区二区日韩欧美| 亚洲丁香婷深爱综合| 一区二区三区日韩欧美| 亚洲国产精品久久久久秋霞不卡| 99视频精品在线| 亚洲欧洲一区二区在线观看| 亚洲砖区区免费| 99视频精品在线| 久久综合中文色婷婷| 国产精品视频xxxx| 99re6这里只有精品| 亚洲人成高清| 每日更新成人在线视频| 欧美一区二区三区播放老司机| 欧美高清在线观看| 亚洲黄色在线看| 日韩香蕉视频| 欧美激情视频一区二区三区免费| 欧美在线视频一区二区| 国产日韩视频| 午夜一区二区三区在线观看| 午夜伦理片一区| 国产精品永久| 乱中年女人伦av一区二区| 欧美 日韩 国产一区二区在线视频| 国产日韩精品一区| 久久精品伊人| 亚洲精选国产| 久久久免费av| 日韩视频在线你懂得| 国产精品国产自产拍高清av| 亚洲性图久久| 欧美成人精品福利| 日韩一级片网址| 韩国av一区二区三区| 欧美精品午夜视频| 亚洲欧美日韩人成在线播放| 欧美91视频| 欧美中文字幕不卡| a4yy欧美一区二区三区| 国产精品一卡二| 欧美韩日一区二区| 欧美在线视频观看免费网站| 亚洲毛片在线看| 久久综合色天天久久综合图片| 99视频在线精品国自产拍免费观看 | 国产一区二区精品丝袜| 欧美精品色一区二区三区| 欧美一区二区三区精品电影| 亚洲美女少妇无套啪啪呻吟| 麻豆成人在线| 久久网站免费| 久久午夜影视| 欧美在线国产精品| 欧美在线999| 欧美丝袜第一区| 欧美日韩天堂| 欧美视频导航| 国产美女一区二区| 国产欧美一区二区三区另类精品| 国产精品久久久久久久久搜平片| 欧美日本不卡高清| 欧美性久久久| 国产伦精品一区二区三区视频黑人 | 亚洲精品久久久久久久久久久久| 久久久免费精品视频| 久久亚洲综合色| 亚洲日本va午夜在线影院| 亚洲美女毛片| 亚洲二区在线| 老司机午夜精品视频| 亚洲无吗在线| 亚洲欧美日韩在线播放| 亚洲经典自拍| 日韩午夜精品视频|