首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C函数重载,该怎么解决

2012-04-21 
C函数重载有两个函数f(int a)f(float a)这样调用f(1)则调用第一个函数如果这样f(1.0)则出现错误无法编译

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);

热点排行