我正在复习一堂课的练习决赛,一个问题是 -
编译器如何处理以下每个调用?假设在代码中的其他任何地方都没有引用max。
(a)max(3,7)
(b)max(3.0,7.0)
(c)max(3,7.0)
我完全不了解编译器的东西,我研究的东西超出了这个范围,所以任何帮助都会受到赞赏。
答案 0 :(得分:2)
编译器将找到最合适的方法,该方法可以根据传递的参数值从重载中调用。如果没有找到,则会弹出错误。例如,当调用max(3,6)
时,因为两个参数都是int
类型,如果存在一个名为max
的方法,它接受这样的参数,编译器将调用它。如果没有,并且如果有一个方法接受可以转换传递值的参数(例如max(double,double))
),那么它将被调用,因为int
可以隐式转换 double
。如果不存在此类方法,请输入错误。了解function overloading