编译器如何在超载中区分浮动和双重参数
How does compiler differentiate between float and doubl arguments in overloaded
假设有2个函数
void hello(float x)
{ cout<<x*x;}
void hello (double x)
{cout<<x*x;}
以及函数调用是:hello(5.0(;哪个函数将被称为?
double。
float ditterals以 f
后缀结尾,如 5.0f
中。5.0
是双重的。
这里没有歧义。ISO C 标准指定的是浮点文字,如果不用f
/F
或l
/L
浮动,则将分别将其视为float
或long double
,是double
。。P>
在您的情况下,授权编译器将hello(5.0)
编译为hello(double)
的呼叫。
引用N4296,第2.13.4/1节:
除非后缀明确指定,否则浮动文字的类型为
double
。后缀f
和F
指定float
,后缀l
和L
指定long double
。如果缩放值不在代表的范围内 该类型的值,该程序是不形成的。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 操作员超载;必须是二进制操作员(具有3个参数)
- C bool表达式作为函数参数调用错误的超载
- 是否可以确定函数的参数是否已签名或无符号,以实现可能性超载函数
- 如何将基类方法超载作为参数传递到C 中的模板类
- 编译器如何在超载中区分浮动和双重参数
- 如何使用模板函数参数编写包装函数,该功能可以采用超载的成员函数
- 将超载函数指针作为参数传递到过载模板功能
- C 超载相等运算符.我应该写自己的功能以接受通过参考或值传递的参数
- rvalue参数无法解析功能超载
- C - 编译器如何以参数为参数的过载函数在超载函数之间决定
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 功能超载以NULLPTR作为参数分辨率
- 确定是否有针对特定类型的参数定义的超载函数
- 编译器是否也将所有参数依赖类型实例化,即使超载函数的参数计数不匹配
- 超载函数调用功能具有相同名称,但参数不同