1.定义
template<typename T1, typename T2,......,typename Tn>
返回值类型 函数名(参数列表){}
2.例子
1)单个参数
a.求较大值
template<class T>T Max(T x, T y)
{
return x > y ? x : y;
}
b.交换
template<class T>
void Swap (T& a, T& b)
{
}
// 注意,上述代码只是一个函数模版(模具),并不是一个真正的函数。
2)多个参数
template<class T1, class T2, typename T3> // class与typename等价
void Fun(T1 a, T2 b, T3 c) //这三个参数类型可以不一样
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
3.实例化
1)隐式实例化——直接调用模版
template<class T> //模版类型只有一个
T Add(T a, T b) //实现一个加法函数模版
{
return a + b;
}
int main()
{
// 函数模版的三种隐式实例化
cout << Add(10, 20) << endl;
cout << Add(1.1, 2.2) << endl;
cout << Add('c', 'd') << endl;
return 0;
}
2)显示实例化 ——函数名<类型>
template<class T>T Max(T x, T y)
{
return x > y ? x : y;
}
int main()
{
cout << Max<int>(10,20) << endl;
return 0;
}