1. 函式模板
1.1 函式模板的定義
函式模板的定義與類模板的定義型別,如:
template
type min(type a,type b)
同樣是使用template,也可以使用template,這裡定義了函式的返回值型別,引數型別,也可以在函式模板中使用關鍵字size定義常量,如:
template
type test(const type (*a)[size])
上述**使用int定義了乙個常量,即可以使用非typename/class來定義常量,然後傳入陣列的引用。
typename還有另乙個作用,就是在模板中說明某個引數是乙個型別,而不是值,如:
template
parm test(parm *k,u value)
這裡使用typename說明parm::name是乙個資料型別,而不是乙個數值,因此整個表示式是宣告了乙個指標p。如果沒有typename說明,parm::name就是parm::name就是類parm中的乙個靜態變數了,那麼整個表示式就是兩個值的相乘。
1.2 模板函式的使用
模板函式的使用很簡單,和正常使用函式一樣,如cout<< min(1,2)< 也可以先定義函式指標指向函式模組,然後再使用該函式指標呼叫函式,如: int (*p)(int a,int b) = &min;//這裡要加上&取位址符號,否則在vc++中通不過 cout << (*p)(1,2)< 先看如下2個函式 交換int型別兩個數字 void myswapint int a,int b 交換double資料 void myswapdouble double a,double b 通過對比,兩個函式僅僅是函式名不同,傳參型別不同,但 的邏輯完全一樣。為了減少重複 的編寫。我們可以通過如下方... 1.template引數定義中,typename 和class 可以互換,盡量使用typename,不可以使用struct 2.模板引數可以使用任意型別,包括內建型別,自定義類,列舉等 3.模板引數名稱可以使用任意名稱 4.函式模板不是只編譯乙份滿足多重需要,而是為每一種例項化型別編譯乙份 5.只有... 函式模板 模板,template 定義乙個模子,自動適應各個型別。語法 template t t arr,int len 1 演算法相同 2 元素型別不同,用t代替。使用時,用 來具體指定typename的型別 int main 也就是說,在使用時函式名為 表示吧int型別帶入模板。1 使用函式模板...C 函式模板入門
C 函式模板基礎學習
C 學習筆記 函式模板