函數模板:
對比函數重載,函數模板,只需要一個函數就搞定
具體化:就是將我們指定的類型,單獨處理
template<> void fun<job>(job& j1, job& j2);
實例化:生成指定類型的函數定義
template void fun<job>(job&j1, job&j2);
#include <iostream>
using namespace std;
struct Node
{
int a;
double d;
};
//函數調用優先順序,普通函數優先模板具體化函數調用,模板具體化函數優先模板函數調用
//模板函數
template<typename T>
void fun(T a )//無法使用默認參數,調用這個函數,一定要傳參數
{
cout << a << endl;
}
//模板具體化函數
template<> void fun<Node>(Node no)
{
cout << no.a << " " << no.d << endl;
}
//模板具體化函數
template<> void fun<int>(int a)
{
cout << a << endl;
}
//普通函數
void fun(int a)
{
cout << a << endl;
}
//實例化
template void fun<double>(double f);
int main()
{
fun(12);
fun(12.13);
fun('a');
fun("abc");
//fun();
system("pause");
return 0;
}