2023年12月11日发(作者:德治与法治的关系)
重载函数的二义性
重载函数的定义
1.函数名称相同
2.参数列表不同
3.与返回值无关
编译器是如何匹配要使用哪个函数的
1.选定候选函数集:被调用函数名相同;声明在调用点可见
2.选定可行函数集:候选函数的参数列表数量相同、各个参数类型相同或可以进行类型转换
3.选出最佳匹配函数:找出最合适的重载函数
函数重载的二义性是指在编译过程中无法找出最匹配的函数,或者说编译器在函数匹配之后还是有很多函数满足要求,无法确定执行哪一个而引发的错误
例一:int get(); 和 int get(int a = 0) 这类函数中,不给参数和有默认参数会造成歧义
例二:int get(int m) 和 float get(float m) 这类函数中,参数隐式转换(double既可以隐式转换为long,也可以是int),无法确定哪一个更加匹配
int get(int m) 和 int get(int& m) 这类函数中,传值和引用都可以完成调用,只不过传值有拷贝开销,而引用没有拷贝开销
本文发布于:2023-12-11 08:29:33,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702254573118031.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:重载函数的二义性.doc
本文 PDF 下载地址:重载函数的二义性.pdf
留言与评论(共有 0 条评论) |