函数模版和普通函数同名问题
为什么运行时提示说 对重载函数的调用不明确#include<iostream>
using namespace std;
int max(int a, int b)
{
cout<<"普通函数"<< endl;
return a>b ? a:b;
}
template<typename T>
T max(T a, T b)
{
cout<< "函数模版-1"<< endl;
return a>b ? a:b;
}
template<typename T>
T max(T a, T b, T c)
{
cout<<"函数模版-2"<< endl;
return 0;//max(max(a, b), c);
}
int main()
{
int a = 1;
int b = 2;
cout<<max(a, b)<< endl; //当函数模版和普通函数都符合调用时,优先选择普通函数
cout<<max<>(a, b)<< endl; //如显示使用函数模版 则使用<>类型列表
cout<<max<>(3.0, 4.0)<< endl; //若函数模版产生更好的匹配 使用函数模版
cout<<max<>(5.0, 6.0, 7.0)<< endl; //重装
cout<<max('a', 100)<< endl; //调用普通函数 可以隐式类型转换
return 0;
}