[英]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");
}
你的问题是,你要保存的变量courseName
和courseGrade
为全局变量。 因此,您将用当前(在本例中为Chemistry)覆盖先前类实例的数据。 你需要做的是移动的声明courseName
和courseGrade
存取内部private
的类里面,就像这样:
class GradeBook {
private:
string courseName;
int courseGrade;
public:
//put your functions here
}
代码存储值的位置是全局的,因此所有实例都将显示为相同的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.