函数模板
函数的模板不是实体的函数,编译器不能为其生成可执行代码,
函数模板的一般形式:
template<类型参数列表>
返回类型 函数名(实行参数列表)
{
// code
}
为什么要使用函数模板
看下面的重载函数
int add(int a,int b){
return a + b;
}
double add(double a ,double b){
return a + b;
}
类型不一样,代码写了多次,
这个时候可以使用宏定义
#define add(a,b)(a+b)
但是宏定义缺少类型检查,宏在预处理阶段就被替换掉,编译器并不知道宏的存在
这个时候就可以使用函数的模板,
如下
#include <iostream>
#include <string>
using namespace std;
template <class T>
T add(T a, T b)
{
return a + b;
}
int main()
{
cout << add(2, 5) << endl;
cout << add(2.1, 5.2) << endl;
return 0;
}