作用:
建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来表示。
目的:
提高函数的复用性。
特点:
函数参数、返回值类型不一样,处理逻辑(几乎)一样。
语法:
template<typename>T
函数声明或定义
说明:
template : 声明创建模板。
typename : 表明其后面的符号是一种数据类型,可以用class代替。
T :通用的数据类型,名称可以替换,通常为大写字母。
两种使用方式:
1、自动类型推导
2、显示指定类型
示例:
通过函数模板实现不同数据类型的两个变量的交换。
// 定义函数模板:交换两个变量
template<typename T>
void Swap_FuncTemplate(T &a, T &b)
{
T tmp = a;
a = b;
b = tmp;
}
// 使用函数模板
void test()
{
int a = 10;
int b = 20;
cout<<"----------before swap:a "<<a<<" b "<<b<<endl;
// 函数模板使用方法1:自动类型推导
Swap_FuncTemplate(a, b);
cout<<"----------after swap:a "<<a<<" b "<<b<<endl;
double d1 = 1.001;
double d2 = 2.002;
cout<<"----------before swap:d1 "<<d1<<" d2 "<<d2<<endl;
// 函数模板使用方法2:显示指定类型
Swap_FuncTemplate<double>(d1, d2);
cout<<"----------after swap:d1 "<<d1<<" d2 "<<d2<<endl;
}