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

積木

No sub title

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原文轉(zhuǎn)載自:http://www.shnenglu.com/shenhuafeng/archive/2006/12/30/17041.html

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

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

    }
;

    typedef myPLA;
    typedef myPLB;

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

    }
;

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

    }
;

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

    }
;
}

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

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

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

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

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

    typedef myPLA;
    typedef myPLB;

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

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

    }

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

    typedef myPLA;
    typedef myPLB;

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

    }

}
當(dāng)然直接偏特化namespace級別的函數(shù)也是不被允許的。你可以對這些函數(shù)做重載。這就意味著你只能更改函數(shù)的參數(shù)列表而不能改變函數(shù)的返回類型等。
請看以下代碼:
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 2012-11-15 10:23 Jacc.Kim 閱讀(550) 評論(0)  編輯 收藏 引用 所屬分類: VC / 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>
            欧美一区二区三区免费观看| 欧美一区二区视频观看视频| 国产亚洲激情视频在线| 亚洲高清在线观看| 国产视频一区在线| 99re66热这里只有精品4| 亚洲国产影院| 久久久久国产精品一区| 久久超碰97人人做人人爱| 欧美三区在线视频| 日韩一区二区免费看| 亚洲日本在线观看| 麻豆国产精品777777在线| 久久亚裔精品欧美| 国产婷婷色一区二区三区在线| 亚洲视频精品| 亚洲一区亚洲| 国产精品高潮呻吟久久av无限 | 国产精品99久久久久久久女警| 久久久天天操| 美女成人午夜| 亚洲电影毛片| 久久综合久久久久88| 免费成人高清在线视频| 激情成人av在线| 久久精品视频在线看| 久久美女艺术照精彩视频福利播放| 国产精品一二一区| 欧美亚洲一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 国产色爱av资源综合区| 欧美影院一区| 免费亚洲一区| 亚洲精品久久久久中文字幕欢迎你| 免费在线亚洲| 日韩视频三区| 午夜精品一区二区三区在线| 国产欧美69| 久久乐国产精品| 亚洲国产电影| 亚洲免费小视频| 国产一级精品aaaaa看| 久久亚洲影音av资源网| 亚洲国产精品久久久久秋霞不卡| 99riav1国产精品视频| 国产精品久久国产愉拍| 欧美一区二区在线免费播放| 欧美国产第二页| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩免费区域视频在线观看| 亚洲视频一二| 欧美**人妖| 亚洲一区区二区| 黄色国产精品一区二区三区| 欧美 日韩 国产一区二区在线视频 | 欧美理论在线播放| 亚洲一区影院| 欧美大片一区二区| 亚洲欧美一区二区激情| 在线观看视频免费一区二区三区| 欧美激情一区二区三区不卡| 亚洲欧美日韩另类精品一区二区三区| 久久婷婷丁香| 亚洲欧美清纯在线制服| 亚洲国产激情| 国产伦精品一区二区三区免费| 开心色5月久久精品| 亚洲一区二区三区中文字幕| 欧美成人午夜影院| 欧美一区视频| 99精品国产高清一区二区| 国产在线观看一区| 欧美视频一区二区在线观看 | 玖玖玖国产精品| 亚洲综合国产激情另类一区| 在线看欧美视频| 国产美女一区二区| 欧美日韩美女在线观看| 久久综合导航| 欧美在线黄色| 亚洲综合不卡| 99精品视频网| 亚洲日本免费电影| 免费视频一区| 久久久久久久综合日本| 亚洲综合999| 一本色道久久综合亚洲精品按摩| 在线看片成人| 黑人一区二区| 国产一区美女| 国产婷婷成人久久av免费高清 | 亚洲福利视频一区| 国产亚洲精品久久飘花| 国产精品九色蝌蚪自拍| 欧美丝袜一区二区三区| 欧美老女人xx| 欧美日韩国产精品一卡| 欧美电影电视剧在线观看| 久久综合网络一区二区| 久久精品国产久精国产一老狼| 午夜精品成人在线视频| 亚洲小视频在线| 一区二区三区精品在线| 99国产精品久久久久久久成人热| 亚洲精品久久久久久下一站 | 久久另类ts人妖一区二区| 久久国产福利| 久久久久久久综合日本| 久久精品一区| 久久婷婷亚洲| 欧美高清视频一区二区| 欧美韩日一区二区三区| 欧美精品一区二区三区四区| 欧美精品99| 欧美日韩中文字幕在线视频| 欧美无乱码久久久免费午夜一区| 欧美日韩一区自拍| 国产精品拍天天在线| 国产免费亚洲高清| 韩国一区二区三区在线观看| 在线播放中文一区| 最新日韩在线| 亚洲在线播放| 久久久久久久综合色一本| 免费成人黄色| 亚洲欧洲久久| 亚洲一区欧美二区| 欧美在线视频免费| 你懂的国产精品| 欧美午夜片在线观看| 国产欧美精品日韩精品| 玉米视频成人免费看| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲无吗在线| 久久久久久网| 亚洲欧洲一区二区天堂久久| 亚洲性感美女99在线| 久久久精品一品道一区| 欧美精品一区二区三区久久久竹菊| 国产精品久久久久久久久借妻| 国产视频亚洲| 99热这里只有成人精品国产| 午夜精品久久久久久久99黑人| 另类人畜视频在线| 一区二区三区www| 久久免费偷拍视频| 国产精品久久99| 亚洲国产精品成人综合色在线婷婷| 在线亚洲高清视频| 免费欧美在线| 亚洲香蕉视频| 欧美精品色一区二区三区| 国产亚洲精品久久飘花| 一区二区国产日产| 美日韩免费视频| 亚洲伊人观看| 欧美日韩免费视频| 在线观看国产日韩| 欧美一区视频| 夜夜爽夜夜爽精品视频| 久久在线免费| 国产日韩欧美在线视频观看| 夜夜精品视频一区二区| 美乳少妇欧美精品| 性欧美video另类hd性玩具| 欧美精品v日韩精品v国产精品| 黑人一区二区三区四区五区| 亚洲欧美国产制服动漫| 亚洲国产一区二区a毛片| 久久精品五月| 国产亚洲精品久久久久久| 亚洲香蕉伊综合在人在线视看| 欧美成人在线免费视频| 久久精品av麻豆的观看方式| 国产精品系列在线| 亚洲伊人色欲综合网| 久久久99免费视频| 亚洲永久免费观看| 欧美视频免费在线| 日韩午夜免费| 亚洲国产视频一区二区| 久久综合九色99| 激情久久五月天| 久久久久久亚洲精品杨幂换脸 | 国产视频一区在线观看| 亚洲在线一区| 亚洲视频1区| 国产精品久久一区二区三区| 亚洲一区www| 亚洲影视在线| 国产精品一区二区三区久久| 亚洲欧美日韩一区二区在线| 中文久久乱码一区二区| 国产精品青草久久| 欧美一级久久久| 欧美一区二区三区在| 国产偷自视频区视频一区二区| 久久久精品国产免费观看同学| 欧美在线视频免费播放| 黄色成人小视频|