为什么这段代码没有输出所需的输出?

Jon*_*ein 0 c++

它总是输出'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();
}
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 7

Circle::r永远不会设置成员变量,局部变量rin main()设置为via 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();
}
Run Code Online (Sandbox Code Playgroud)

变量int r的声明main()是不相关的成员变量r在课堂上Circle,即使它们具有相同的名称:它们是两个不同的变量.

编辑:

进一步完善课程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
Run Code Online (Sandbox Code Playgroud)

变化:

  • area 不需要是成员变量(如Fred Larson所述)
  • r不需要circle_area()r成员变量那样传递给成员函数,因此circle_area()可以访问它

  • 我怀疑OP不了解范围的概念.`area`变量也不需要是类的成员. (2认同)