描述:
函式模板做的事情就是將函式的引數型別進行抽象化,如下面**寫到的,這是將兩個類進行比較,取最小的,這個類可能是int、long、double、複數、年齡類等,如果在乙個工程裡,多個類都涉及到這種比較,就需要對每個類都寫一次這樣的比較函式。
因此,函式模板就是為了解決類似問題,當演算法一樣時,只是引數型別不一樣時,將引數型別進行抽象,寫出通用函式,這就是函式模板。
#include using namespace std;
template t min(t a, t b)
int main()
當然,讀者可能還會關心,模板是如何工作的,編譯器是如何識別模板?
請看上述**,當**編譯到:
cout << "min:" << min(10, 8);
編譯器就會去找min的函式定義,發現沒有找到匹配型別的函式,只找到了乙個函式模板
t min(t a, t b)
這時,編譯器就會嘗試將min(10,8)往 t min(t a, t b)推導,發現該函式模板符合,t就是int,推導成功,
此時,編譯器獲得的**就是
int min(int a, int b)
return (a < b) ? a : b;
模板 函式模板
c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...
函式模板和模板函式
1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...
函式模板和模板函式
1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...