本次是接着前面的例子使用模板函数来更方便的计算三个数的最大值。
代码程序
#include <iostream>
using namespace std;
template <typename T>
T max(T a,T b,T c){
if(b>a)a=b;
if(c>a)a=c;
return a;
}
int main(){
int i1=8,i2=5,i3=6,i;
double d1=56.9,d2=90.765,d3=43.1,d;
long g1=67843,g2=-456,g3=78123,g;
i=max(i1,i2,i3);
d=max(d1,d2,d3);
g=max(g1,g2,g3);
cout <<"i_max="<<i<<endl;
cout <<"d_max="<<d<<endl;
cout <<"g_max="<<g<<endl;
return 0;
}
运行结果
代码解析
1.在c++当中使用template关键词来定义模板函数
template <typename T>
template的意思是模板,typename是类型名,后面的T是一个类型参数,当然也可以是其他的字母,这里使用T的目标是为了表示类型type的意思。
2.编译系统会根据函数名 max与模板函数max进行匹配,将实参类型取代模板当中的T,这样就实现了后面的使用int代表T使用double代表T或者使用long代表T。
3.模板函数适用于参数数量相同但是类型不相同的情况。如果参数数量不相同就不可以使用模板函数了。