重载函数的定义 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) 这类函数中,传值和引用都可以完成调用,只不过传值有拷贝开销,而引用没有拷贝开销
重载函数的二义性
最新推荐文章于 2024-04-18 13:24:50 发布