函数模板 Function Template
可以将数据类型作为参数。
自己的理解:应用在实现方法相似的操作中。例如排序不同类型的数组,交换不同类型的两个数,但普通的swap函数需要参数与数据类型相匹配,实现多种数据类型的swap可能需要多个swap函数,int_swap,double_swap…或者进行函数的重载(overload),比较繁琐。而函数模板可以实现一个函数接纳多种数据类型,并做同一件事。
WARNING:函数的重载 !=函数模板
//函数模板的声明 关键字typename = class(旧版本), T可以重复使用,生命周期是这个函数
//正常声明函数 void... 参数可以为为自定义的 参数类型 也可以是 其他的数据类型
template <typename T> void swap_show(T&, T&);
//函数的定义 将template <typename T>置于第一行说明是一个函数模板 也可以放在同一行
template <typename T>
void swap_show(T& a, T& b)
{
function body
}
下来是一个简单的应用
#include <iostream>
using namespace std;
//函数模板声明
template <typename T> void swap_show(T&, T&);
int main()
{
int a = 1, b = 2;
swap_show(a,b);
double c = 2.5, d = 5.2;
swap_show(c,d);
system("pause");
return 0;
}
//函数模板的定义
template <typename T>
void swap_show(T& a, T& b)
{
T temp;
temp = a;
a = b;
b = temp;
cout << a << ' '<< b << endl;
}
运行结果:
实现了int类型的交换以及double类型的交换