C ++函数重载?圈子区域

时间:2012-03-09 12:40:02

标签: c++ math

我正在尝试使用我的程序获得圆圈区域。但是区域不是小数点。

#include<iostream>

using namespace std;


float AreaOfCircle(float r);
int AreaOfCircle(int r);

int main()
{int rad;
    cout<<"Enter the Radius of Crircle: ";
    cin>>rad;
    cout<<"The Are of the Cirlcle: "<<AreaOfCircle(rad);

}
float AreaOfCircle(float r)
{
    int area=0;
    area=2*3.1456*r*r;
    return area;
}

int AreaOfCircle(int r)
{
    int area=0;
    area=2*3.1456*r*r;
    return area;
}

但我需要回答一些小数点。

3 个答案:

答案 0 :(得分:7)

您没有调用该方法的float版本。

将变量声明为float

float rad;

或在调用方法之前将其强制转换为float

AreaOfCircle((float)rad);

您还需要在重载方法中使用float而不是int

float AreaOfCircle(float r)
{
    float area=0;   // <--- float here
    area=2*3.1456*r*r;
    return area;
}

此外:

area = pi * r * r
length = 2 * pi * r
pi ~= 3.1415

答案 1 :(得分:3)

除了@Luchian回答之外,您还需要将返回值更改为float

float AreaOfCircle(float r)
{
    int area=0;        // <<----- float area = 0;
    area=2*3.1456*r*r;
    return area;
}

更改为:

float AreaOfCircle(float r)
{
    float area=0;
    area=2*3.1456*r*r;
    return area;
}

或只是:

float AreaOfCircle(float r) { return 2*3.1456*r*r; }

答案 2 :(得分:0)

编译器将调用它认为与传递的参数类型最匹配的重载。因为你传递了一个int,所以它假设你想要int版本。

通过Luchian建议(或者首先使用浮点数)转换为浮点数,你告诉编译器你打算将参数作为浮点类型 - 因此,它选择浮点版本。