1.有默认参数时,实际上就可以认为该函数可以代表几种函数。这几种函数可以用下例说明:
#include <iostream>
#include <string>
using namespace std;
int func(int i) { cout << 1 << endl; return 0; }
int func(int i, int j = 0) { cout << 2 << endl; return 0; }
int func(int i, int j = 0, int k = 0) { cout << 3 << endl; return 0; }
int main()
{
func(1);//错误,有多个重载函数与参数列表匹配
func(1, 2);//错误,有多个重载函数与参数列表匹配
return 0;
}
这说明第三个函数已经包含了前俩函数。
2.对于没有默认参数情况。一:选择可行函数,满足形参与实参个数相同,每个对应的形参与实参隐式转换。二:实行最佳匹配。