函数模板和函数的次序
文章目录
在有多个函数和函数模板名字相同的情况下,编译器如下处理一
条函数调用语句
- 先找参数完全匹配的普通函数(非由模板实例化而得的函数)。
- 再找参数完全匹配的模板函数。
- 再找实参数经过自动类型转换后能够匹配的普通函数。
- 上面的都找不到,则报错
#include<iostream>
using namespace std;
template <class T>
T Max(T a,T b){
cout<<"TemplateMax"<<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(void){
int i = 4,j = 5;
Max(1.2,3.4);
Max(i,j);
Max(1.2,3);
Max(3,1.2);
return 0;
}
MyMax
TemplateMax
TemplateMax2
TemplateMax2