函数模板不是直接执行的程序,而是执行后通过编译器进行转换,转换成模板函数进行实现
#include<iostream>
using namespace std;
template<typename type>//函数模板
type Max(type a,type b)
{
cout<<typeid(type).name()<<endl;//进行参数的推演,并输出参数
return a > b ? a : b;
}
void main()
{
cout<<"Max = "<<Max(5.55,99.99)<<endl;
//cout<<"Max = "<<Max(5.55,99)<<endl;程序不能正常运行,因为type产生二义性,即函数模板不能进行隐式转换
cout<<"Max = "<<Max<int>(5.55,4)<<endl;//解决二义性的方法
}
但是以上模板只能比较两个相同类型的大小,下面稍微改动即可实现两个不同类型的数值比较
#include<iostream>
using namespace std;
template<typename type1,typename type2>//函数模板
type1 Max(type1 a,type2 b)
{
return a > b ? a : b;
}
void main()
{
cout<<"Max = "<<Max(5.5,'a')<<endl;
}