读书人

C函数重载,该怎么解决

发布时间: 2012-04-21 14:34:44 作者: rapoo

C函数重载
有两个函数
f(int a);
f(float a);


这样调用f(1)则调用第一个函数
如果这样f(1.0)则出现错误无法编译


跪求高手解答 谢谢!

[解决办法]


因为 1.0 的类型是 double
double 转成foat 和 double 转成 int

是同级的转换的,所以不能重载.

详见 c++ primer(第三版) 的 函数重载.
[解决办法]
在参数类型能够隐式转换的情况下,编译器不能确定调用哪个函数,由此,会产生错误。

在C++中,要想调用后者,可以
f( 1.0f );
或者
f((float)1.0);

读书人网 >C语言

热点推荐