我重载了区域函数。像这样 float 区域(int v,int u); float 区域(float r,float s); 然后我用参数 2.3,4.4 调用了 area 函数 但显示错误 重载“area(double, double)”的调用不明确 但我不明白是什么原因导致歧义,因为这里很明显2.3和4.4是float类型然后调用area的第二个版本 float 区域(float r,float s); 有人解释了这段代码中出现歧义的原因
#include<iostream>
using namespace std;
float area(int v,int u)
{
return 0*v*u;
}
float area(float r,float s)
{
return r*s;
}
int main()
{
cout << area(2.3,4.4);
return 0;
}
最佳答案
area调用中的参数是double类型,不是float类型。编译器无法决定是否应将它们转换为 float 或 int。以下将按预期工作:
cout << area(2.3f,4.4f);
在这种情况下,传递给 area 的值是 float ,而不是 double 值。
关于c++ - 为什么重载 area 函数时以下代码会出现歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505392/