c++之函数重载(函数匹配)
Case
void f();
void f(int);
void f(int, int);
void f(double, double = 3.14);
匹配原则:
1)其形参数量与本次调用提供的实参数量相等
2)每个实参的类型与对应的形参类型相同,或者可以转换成形参的类型;
寻找最佳匹配:
1)该函数每个实参的匹配都不劣于其他可行函数需要的匹配;
2)至少有一个实参的匹配优于其他可行函数提供的匹配;
例子:
a) f(2.56,38);
b) f(38);
c) f(32,0);
d) f(3.9,9.8);
a)可行函数是void f(int, int)与void f(double, double =3.2)。但是最佳匹配不存在,考虑第一个参数 void f(double, double =3.2) 优势明显;
但考虑到第二个实参38时,void f(int, int) 优势明显,具有二义性而拒绝其请求;
b)void f(int);
c)void f(int, int);
d)double f(double, double = 3.2);
tips:函数重载时,应尽量避免强制类型转换。
函数匹配与const实参
Record(Acount&);
Record(const Acount&);
const Acount a;
Acount b;
Record(a); //调用Record(const Acount&);
Record(b);//调用Record(Acount&);
本文版权归作者所有,转载请注明出处http://www.cnblogs.com/iloverain/.未经作者同意必须保留此段声明,否则保留追究法律责任的权利.