成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++模板特化(template)-創(chuàng)新互聯(lián)

C++模板特化(template)
模板為什么存在?
相信大家都寫過Add函數(shù)

嘉定網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,嘉定網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為嘉定近千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的嘉定做網(wǎng)站的公司定做!
int Add(int left,int right)
{
    return left+right;
}

double Add(double left,int right)
{
    return left+right;
}

這種寫法會使代碼冗余,而且不美觀,所以就需要一個通用的Add函數(shù),模板就出現(xiàn)了

template<class T>       //或template<typename T>
T Add(T left,T right)
{
    cout << typeid(T).name() << endl;//查看調(diào)用模板的類型
    return left+right;
}

模板特化存在的必要性
上面的模板只能解決一些普通的類型,但對于特殊的類型就會出錯
比如:

template<class T>
T& Max(T& left, T& right)
{
    return left > right? left : right;
}
int main()
{
    char* p1 = "world";
    char* p2 = "hello";
    cout << Max(p1, p2) << endl;
}

模板特化中的函數(shù)特化
對于上面char*類型的解決方法:

 template<>
 char*& Max<char*>(char*& left, char*& right)
 {
    if (strcmp(left, right) > 0)
        return left;

    return right;
 }

C++模板特化(template)【注意】

使用模板特化時,必須要先有基礎的模板函數(shù)(就是上面第一個模板函數(shù))

使用特換模板函數(shù)時格式有要求:

1.template 后直接跟<> 里面不用寫類型
2.函數(shù)名<特化類型>(特化類型 參數(shù)1, 特化類型 參數(shù)2 , …) 在函數(shù)名后跟<>其中寫要特化的類型

特化的函數(shù)的函數(shù)名,參數(shù)列表要和原基礎的模板函數(shù)想相同,避免不必要的錯誤
也可以寫為

char* Max(char* left, char* right)
{
    if (strcmp(left, right) > 0)
        return left;

    return right;
}

編譯器當檢測到普通函數(shù)和模板都可以使用時,優(yōu)先使用普通函數(shù)
所以,函數(shù)模板一般不需要特化,直接將不能處理類型的具體函數(shù)給出
模板特化中的類特化
1.全特化

template<class T1,class T2>
T1& Max(T1& left, T2& right)  //返回類型自定T1或T2
{
    return left > right? left : right;
}

2.偏特化(部分特化)

//都可以
template<T,int>
template<T,int>
template<double,T>
template<T,double>

編譯器在調(diào)用模板時,偏特化模板優(yōu)于全特化模板
C++模板特化(template)總結:在調(diào)用模板時,優(yōu)先級
普通函數(shù)<偏特化<全特化

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章題目:C++模板特化(template)-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article20/dsieco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計靜態(tài)網(wǎng)站、響應式網(wǎng)站、微信公眾號、品牌網(wǎng)站制作、標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司
巩留县| 台南市| 溆浦县| 金平| 长武县| 保康县| 新乐市| 固始县| 肇东市| 教育| 烟台市| 泸州市| 天水市| 专栏| 顺平县| 那曲县| 郑州市| 云安县| 白河县| 兖州市| 千阳县| 安远县| 青铜峡市| 福贡县| 丹巴县| 平潭县| 大厂| 济宁市| 阳山县| 康马县| 江城| 广河县| 镶黄旗| 桓台县| 安福县| 德江县| 汉沽区| 梅河口市| 曲靖市| 阜阳市| 铁岭县|