c++ - 为什么重载 area 函数时以下代码会出现歧义

标签 c++ overriding

我重载了区域函数。像这样 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/

相关文章:

javascript - 在 JavaScript 中覆盖文档对象时遇到问题

c++ - 是否有可能有一个继承最终函数但创建相同函数(而不是重写)的派生类?

c++ - 如何在 long 变量中保留小时、分钟、秒?

c++ - 将 CString 转换为 Char 以更新数据库

c++ - 如何找到除数以最大化余数?

c++ - 这是命名空间问题吗

c++ - 套接字编程新手,需要帮助了解如何连接

java - 为什么这是静态绑定(bind)而不是动态绑定(bind)?

java - 如何覆盖对象的ArrayList的ToString方法?

c++ - 方法覆盖和重载