这个代码为什么不输出所需的输出?
问题描述:
该地区始终输出“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
,即使它们具有相同的名称:它们是两个不同变量。
编辑:
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
变化:
Circle
类的进一步细化
-
area
并不需要是一个成员变量(如由Fred拉尔森说明) -
r
不需要传递给circle_area()
成员函数N作为r
是一个成员变量,所以circle_area()
有权访问它
+2
我怀疑OP不理解的范围的概念。 'area'变量不需要是类的成员。 – 2012-01-12 21:20:04
'r'在主要是从类成员变量不同'r' – Mahesh 2012-01-12 21:20:07