C ++编译器如何处理这些基本和类似的函数

时间:2014-05-14 03:56:15

标签: c++ compiler-construction

我正在复习一堂课的练习决赛,一个问题是 -

编译器如何处理以下每个调用?假设在代码中的其他任何地方都没有引用max。

(a)max(3,7)

(b)max(3.0,7.0)

(c)max(3,7.0)

我完全不了解编译器的东西,我研究的东西超出了这个范围,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

编译器将找到最合适的方法,该方法可以根据传递的参数值从重载中调用。如果没有找到,则会弹出错误。例如,当调用max(3,6)时,因为两个参数都是int类型,如果存在一个名为max的方法,它接受这样的参数,编译器将调用它。如果没有,并且如果有一个方法接受可以转换传递值的参数(例如max(double,double))),那么它将被调用,因为int 可以隐式转换 double。如果不存在此类方法,请输入错误。了解function overloading