1.精确匹配,包括实参类型和形参类型相同,实参从数组或函数转换成对应的指针类型,向实参添加顶层const或从实参删除顶层const
2.通过const转换实现的匹配
3.通过类型提升实现的匹配
4.通过算数类型转换实现的匹配
5.通过类类型转换实现的匹配
等级越前,匹配也就越好。接下来对上面的内容做一些解释。
精确匹配
精确匹配比较容易理解。关于顶层const问题,可以参考《函数重载》
通过const转换实现的匹配
所谓通过const转换实现的匹配,指的是通过加const限定词,能够与可行函数精确匹配。例如:
#include <iostream>
using namespace std;
//函数1
/*
int f(string &a)
{
cout<<"call function 1"<<endl;
return 0;
}*/
//函数2
int f(const string &a)
{
cout<<"call function 2"<<endl;
return 0;
}
int main()
{
string test = "test";
f(test);
return 0;
}
在这里,test可以通过const转换,从而匹配函数2,将能够找到最佳匹配函数2(当前情况它也只有一个可选了)。
运行结果如下:










