匹配规则:
1.先找 参数完全匹配的普通函数
2.再找参数完全匹配的模板函数
3.最后找实参进行自动类型转换后可以匹配的普通函数
4.以上都找不到,报错
/**************************函数模板*/
#include <iostream>
using namespace std;
template <class T>
T Max(T a,T b){
cout<<"TempleteMax" <<endl;
return 0;
}
template <class T,class T2>
T Max(T a,T2 b){
cout<<"TemplateMax2"<<endl;
return 0;
}
double Max(double a, double b){
cout<<"MyMax"<<endl;
return 0;
}
int main()
{
int i=4,j=5;
Max(1.2,3.4);//输出MyMax.优先找用户自定义的函数,而非模板实例化的函数
Max(i,j);//输出TemplateMax
Max(1.2,3);//输出TemplateMax2
return 0;
}
注意:匹配函数模板时,不能自动类型转换。