繁体   English   中英

为什么同一对象方法被调用两次?

[英]why is the same objects method called twice?

在学习了两个学期的Java之后,我一直在进行c ++自学。

下面是一个构建良好的简单程序,但是当我运行它时,我得到了两次调用的gradeBook2s displayInfo()方法。 我确定它缺少一些基本知识,但是有什么主意吗?

//GradeBook.h
#include<string>
#include<iostream>
using std::cout;
using std::endl;
using std::string;

string courseName;
int courseGrade;


class GradeBook {
public:
    GradeBook(string name, int grade) {
        setCourseName(name);
        setCourseGrade(grade);
    }

public:
    void setCourseName(string name) {
            courseName = name;
    }

public:
    string getCourseName() {
        return courseName;
    }

public:
    void setCourseGrade(int score) {
                courseGrade = score;
            }


public:
    int getCourseGrade() {
        return courseGrade;
    }

public:
    void displayInfo(){
        cout << "Course Name: " << getCourseName()
            << "Course grade: " << getCourseGrade()
            << endl;
    }
};


//main.cpp
#include<iostream>
#include "GradeBook.h"

int main() {
    GradeBook gradeBook1("Calculus 2", 90);
    GradeBook gradeBook2("Chemistry", 80);

    gradeBook1.displayInfo();
    system("pause");
    gradeBook2.displayInfo();
    system("pause");

}

你的问题是,你要保存的变量courseNamecourseGrade为全局变量。 因此,您将用当前(在本例中为Chemistry)覆盖先前类实例的数据。 你需要做的是移动的声明courseNamecourseGrade存取内部private的类里面,就像这样:

class GradeBook {

private:
string courseName;
int courseGrade;

public:
//put your functions here
}

代码存储值的位置是全局的,因此所有实例都将显示为相同的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM