一、概念和定義
函式模板使用泛型來定義函式,其中的泛型可用具體的型別(如int 和double替換)。通過將型別作為引數傳遞給模板,可以使編譯器生成該型別的函式。
template void swap(t &a, t &b)
如果需要多個將同乙個演算法用於不同型別的函式,一般使用函式模板。
注意:函式模板並不能縮短可執行程式,雖然程式設計師看不到它們,但是編譯器確實生成了相應具體型別對應的函式並且在程式中使用了它們。
優點:一般將模板放在標頭檔案中,並在需要使用模板的檔案中包含標頭檔案,使生成多個函式定義更簡單、更可靠。
二、過載模板
函式模板可以像過載常規函式那樣定義過載模板定義。和常規過載一樣,被過載的模板的函式特徵值必須不同。
template void swap(t* a, t* b,int n)
{ t temp;
for(int i=0;i
1、隱式例項化(implicit instantiation)
int i = 5, j = 6;
函式呼叫swap(i,j)導致編譯器生成乙個swap()的例項,該例項使用int 型別。模板並非函式定義,但使用int的模板例項是函式定義,稱為隱式例項化
2、顯示例項化(explicit instantiation)
template void swap(int, int);
直接命令編譯器建立特定的例項(用int 例項化 t),不需要其他操作。
3、顯示具體化 (explicit specialization)
template <> void swap(int &,int &);
宣告的意思是,不要使用swap()模板來生成函式定義,而應使用專門為int型別顯示地定義的函式定義,一般在宣告之後會有函式定義
顯示具體化宣告在關鍵字template後包含<>,而顯示例項化沒有,並且它們的含義和用法也有區別。
在最近的實習中用到,感覺函式模板還是很方便的,所以自己整理了一下。
C 函式模板使用
一.函式模板的使用 什麼是函式模板 就是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表,在個通用函式就稱為函式模板。函式模板的定義 格式 函式模板由三個部分組成 模板說明 函式定義 函式模板呼叫 1 模板說明 template 型別形式參數列 型別形式參數列 typenam...
c 函式模板的使用
include 函式模板的使用 define max a,b a b a b 巨集定義 using namespace std templatetype max type a,type b 整形數和實型數進行比較 char max char a,char b 字串的模板 void main exam...
C 函式模板的使用
在 c 函式過載 一節中,為了交換不同型別的變數的值,我們通過函式過載定義了四個名字相同 引數列表不同的函式,如下所示 交換 int 變數的值 void swap int a,int b 交換 float 變數的值 void swap float a,float b 交換 char 變數的值 voi...