真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++標(biāo)準(zhǔn)模板庫(STL)前置知識——day1(函數(shù)模板)-創(chuàng)新互聯(lián)

一、概述

??在C++中,模板的意義就是將類型參數(shù)化,函數(shù)模板負(fù)責(zé)抽象出某一種操作,而操作的數(shù)據(jù)類型以及返回值的類型由程序員調(diào)用的時候決定。

公司專注于為企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計、微信公眾號開發(fā)、電子商務(wù)商城網(wǎng)站建設(shè),成都小程序開發(fā),軟件按需求定制開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。二、函數(shù)模板與模板函數(shù)

??初學(xué)的時候容易把這兩者弄混,其實這兩者是不一樣的。函數(shù)模板是模板,由于類型還不確定,編譯器不會去編譯模板,而模板函數(shù)是函數(shù)模板實例化出來的一個函數(shù),此時類型已經(jīng)確定,編譯器會編譯模板函數(shù)。
??比如說下面是一個函數(shù)模板,compare是模板名,編譯器不會編譯這一段代碼。

templatebool compare(T a, T b){return a>b;
}

??但當(dāng)用戶調(diào)用模板代碼的時候,比如

compare(3,4);

??將會實例化出一個模板函數(shù),如下,其中函數(shù)名字為compare,這段代碼才是被編譯器編譯的函數(shù)定義。

bool compare(int a,int b){return a>b;
}
三、實參推演

??假如我們定義了一個函數(shù)模板,如下

templatebool compare(T a, T b){return a>b;
}

??一般的使用方式是指定類型去使用,比如

compare(3,4);
compare(1.2,2.2);

??但如果我們不指定類型的話,比如

compare(3,4);
compare(1.2,2.2);

??這樣也是可以的,而且結(jié)果也是我們想要的,因為此時編譯器會進行實參推演,根據(jù)傳入?yún)?shù)的類型自動實例化出合適的模板函數(shù)。

compare(3,4); //compare(3,4);
compare(1.2,2.2);//compare(1.2,2,2);

??注意,如果沒法配匹到合適的模板函數(shù),編譯器依然會報錯。比如像如下調(diào)用時,沒法匹配到兩個參數(shù)為不同類型(int,double)的模板函數(shù),所有會報錯。

compare(3,2.2);
四、模板的特例化

??還是使用上面的compare函數(shù)模板,當(dāng)我們調(diào)用如下代碼時

compare("123","456");

??編譯器雖然不會報錯,但得到的結(jié)果是比較兩個字符串的地址的大小,于我們而言沒有什么意義,我們想得到的是字符串內(nèi)容的大小關(guān)系,此時就需要使用特例化,重寫當(dāng)類型為const char * 時的比較邏輯,示例如下:

template<>bool compare(const char* a,const char* b){return strcmp(a,b)>0;
}
五、注意事項

??模板代碼一般放在頭文件中定義好,然后在源文件中#include包含,如果頭文件中只有聲明,沒有定義,編譯的時候會出現(xiàn)鏈接錯誤,因為沒辦法實例化該模板函數(shù)。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前題目:C++標(biāo)準(zhǔn)模板庫(STL)前置知識——day1(函數(shù)模板)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/ijhpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部