为什么这段代码没有输出所需的输出?
Why isn't this code outputting the desired output?
它总是为区域输出"0"。我不知道如何在int r
中计算面积。
// Define a class and use it to test out some math stuff
#include <iostream>
#include <cmath>
using namespace std;
class Circle {
public:
// function that calculates the area of a circle
float circle_area(int r) {
area = 3.14 * (r*r);
return area;
} // end function circle_area
void display_msg() {
cout << "Area: " << circle_area(r) << endl;
} // end function display_msg
private:
float area;
int r;
}; // end class Circle
int main(void) {
int r;
Circle circle_calc; // create a Circle object named circle_calc
cout << "Radius of circle: ";
cin >> r;
circle_calc.display_msg();
}
成员变量Circle::r
从未设置,main()
中的局部变量r
通过cin
设置,但从未使用。
像这样的东西可能是你想要的:
class Circle {
public:
Circle(int a_radius) : r(a_radius) {}
// function that calculates the area of a circle
float circle_area(int r) {
area = 3.14 * (r*r);
return area;
} // end function circle_area
void display_msg() {
cout << "Area: " << circle_area(r) << endl;
} // end function display_msg
private:
float area;
int r;
}; // end class Circle
int main(void) {
int r;
cout << "Radius of circle: ";
cin >> r;
Circle circle_calc(r);
circle_calc.display_msg();
}
main()
中声明的变量int r
与类Circle
中的成员变量r
无关,即使它们具有相同的名称:它们是两个不同的变量。
编辑:
Circle
:类的进一步细化
class Circle {
public:
// Constructor.
Circle(int a_radius) : r(a_radius) {}
// function that calculates the area of a circle
float circle_area() { return 3.14 * r * r; }
void display_msg() {
cout << "Area: " << circle_area() << endl;
}
private:
int r;
}; // end class Circle
更改:
area
不需要是成员变量(如Fred Larson所述)r
不需要传递给circle_area()
成员函数,因为r
是成员变量,所以circle_area()
可以访问它
相关文章:
- 在java中解决这段代码时面临循环中的问题
- 我是如何在这段代码中出现分段错误的
- 可能我知道为什么这段代码没有给出任何输出吗?
- 谁能告诉我为什么这段代码没有产生正确的输出?
- 为什么这段代码给出的输出与预期不同?
- 为什么这段代码输出这么多数字
- 为什么这段代码只输出" "?(Codeingame的雷神挑战)
- 我很确定我犯了一个愚蠢的错误,但是这段代码给出的输出太长而无法阅读
- 这段代码的输出是什么,它在构造函数中使用 strcpy?
- 这段代码可编译,但在visualstudio2015社区中运行(c++)时不显示输出
- 怪异的输出:为什么这段代码会给出任何有意义的输出,更不用说这个了
- 具有相同逻辑的两段代码.一个给出预期的输出,而另一个则没有
- 这段代码输出什么笑脸
- 为什么这段代码的输出是22
- 我不明白这段代码的最后一个输出
- 为什么这段代码没有给出任何输出?这似乎是一个无限循环
- 为什么这段代码没有输出所需的输出?
- 这段代码的输出是什么?
- 为什么这段代码不产生输出?c++二进制搜索使用xcode
- 为什么这段代码不影响输出?