C++函数模板主要是为了方便函数形参的个数和处理逻辑一样,只有函数形参的类型不一样的多个函数,可以定义一个通用的函数模板,统一调用,减少函数的定义。
函数模板定义有两个关键字:
template:说明是函数的模板
typename/class :用于定义参数的类型
定义格式:
定义一个函数参数类型:
template <typename T>
定义多个函数参数类型:
template <typename T1,template T2...>
其中typename可以用class代替(不建议)
使用时,在函数头之前添加一个参数类型的定义,然后用统一的参数类型代替原来函数的具体类型即可,详细示例代码如下.
#include <iostream>
using namespace std;
//定义一个函数模板
template <typename T> //定义函数的参数类型
T GetMax(T a,T b,T c) //函数具体的实现逻辑
{
if (b>a)
{
a = b;
}
if (c>a)
{
a = c;
}
return a;
}
int main()
{
int x1 = 3;
int x2 = 4;
int x3 = 5;
int z = GetMax(x1,x2,x3); //函数调用
cout<<z<<endl;
double d1 = 446.6;
double d2 = 234.6;
double d3 = 234.9;
double d4 = GetMax(d1,d2,d3);
cout<<d4<<endl;
float f1 = 45.2;
float f2 = 234;
float f3 = 80.3;
float f4 = GetMax(f1,f2,f3);
cout<<f4<<endl;
system("pause");
return 0;
}
程序运行结果如下: