QiuZH's Program Learn | 函数重载的匹配方式
/ / 点击 / 阅读耗时 3 分钟函数重载的匹配方式
一、确定候选函数
候选函数需满足:
- 和被调用的函数同名。
- 其声明在调用点可见。
二、确定可行函数
可行函数指的是本次调用传入的实参能够被候选函数使用。需满足:
- 形参和实参数相同。
- 每个实参的类型和对应形参类型相同或者能够转换成形参的类型。
三、确定最佳匹配函数
最佳匹配的函数就是最终调用的函数。最佳匹配最基本的思想是认为,实参类型越接近,它们就越匹配。需满足
- 其每个实参匹配都不劣于其他可行函数需要的匹配。
- 至少有一个实参的匹配优于其他可行函数的匹配。
1.最佳匹配原则
最佳匹配优先级按以下顺序:
- 精确匹配,包括实参类型和形参类型相同,实参从数组或函数转换成对应的指针类型,向实参添加顶层const或从实参删除顶层const。
- const转换,指的是通过加const限定词,能够与可行函数精确匹配。
- 类型提升,简单说明类型提升规则:float将提升到double;char、short和相应的signed、unsigned类型将提升到int。
- 算数类型转换(标准转换),short int和float,double等之间的转换,都是算术类型之间的转换。
- 类类型转换,如父子类之间的转换。
2.二义性
当匹配的函数有多个可行性函数,但却不满足最佳匹配原则,会产生二义性。
四、注意
- 调用重载函数时,应当避免强制类型转换。