我有3个函数重载.重载函数中数据类型的优先级如何?
#include <iostream>
using namespace std;
void myfunc (int i) {
cout << "int" << endl;
}
void myfunc (double i) {
cout << "double" << endl;
}
void myfunc (float i) {
cout << "float" << endl;
}
int main () {
myfunc(1);
float x = 1.0;
myfunc(x);
myfunc(1.0);
myfunc(15.0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
int
float
double
double
Run Code Online (Sandbox Code Playgroud)
程序如何决定调用float还是double?
文字有明确定义的类型.特别是,浮点文字具有类型,double除非加上后缀.后缀为f或F使其成为类型的文字,float而后缀为l或L使其成为类型的文字long double.
这解释了观察到的重载分辨率:
myfunc(x);//calls myfunc(float) since x is a float
myfunc(1.0);//calls myfunc(double) since 1.0 is a double
myfunc(15.0);//calls myfunc(double) since 15.0 is a double
Run Code Online (Sandbox Code Playgroud)
类似的推理也适用于整数文字 - 1是文字的类型int.
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |