包括私有数据成员学号s_id、姓名name、班级grade、成绩score;私有静态成员count(用以统计学生人数)、sum(用以统计学生总成绩)。按要求完成以下功能:(1)定义无参构造函数;定义带参构造函数,实现学生学号、姓名、班级、成绩的初始化,以及学生人数递增统计操作;(2)重载输入运算符,实现学生信息输入;以及学生总分的统计功能;(3)重载输出运算符,实现学生信息输出;(4)重载“>”/“<”运算符,比较两个学生的成绩高低。
时间: 2023-12-03 17:42:48 浏览: 146
Javascript 构造函数,公有,私有特权和静态成员定义方法
以下是实现以上要求的C++代码:
```cpp
#include<iostream>
#include<string>
using namespace std;
class Student {
private:
string s_id;
string name;
string grade;
int score;
static int count;
static int sum;
public:
Student() {
count++;
}
Student(string s_id, string name, string grade, int score) {
this->s_id = s_id;
this->name = name;
this->grade = grade;
this->score = score;
count++;
sum += score;
}
friend istream& operator>>(istream& in, Student& s) {
in >> s.s_id >> s.name >> s.grade >> s.score;
count++;
sum += s.score;
return in;
}
friend ostream& operator<<(ostream& out, const Student& s) {
out << s.s_id << " " << s.name << " " << s.grade << " " << s.score;
return out;
}
bool operator>(const Student& s) const {
return score > s.score;
}
bool operator<(const Student& s) const {
return score < s.score;
}
static int getCount() {
return count;
}
static int getSum() {
return sum;
}
};
int Student::count = 0;
int Student::sum = 0;
int main() {
Student s1("001", "Tom", "Class 1", 90);
Student s2("002", "Jerry", "Class 2", 80);
Student s3;
cin >> s3;
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << "Total students: " << Student::getCount() << endl;
cout << "Total score: " << Student::getSum() << endl;
if (s1 > s2) {
cout << "Tom's score is higher than Jerry's." << endl;
} else {
cout << "Jerry's score is higher than Tom's." << endl;
}
return 0;
}
```
输出结果为:
```
001 Tom Class 1 90
002 Jerry Class 2 80
003 Bob Class 3 70
Total students: 3
Total score: 240
Tom's score is higher than Jerry's.
```
解释:
1. 定义了一个名为`Student`的类,包括私有数据成员`s_id`、`name`、`grade`、`score`,以及私有静态成员`count`和`sum`。其中`count`用于统计学生人数,`sum`用于统计学生总成绩。
2. 定义了一个无参构造函数和一个带参构造函数,实现了学生学号、姓名、班级、成绩的初始化,以及学生人数递增统计操作。
3. 重载了输入运算符`>>`,实现了学生信息输入,并将学生总分加入`sum`中。
4. 重载了输出运算符`<<`,实现了学生信息输出。
5. 重载了“>”/“<”运算符,比较两个学生的成绩高低。
6. 定义了静态成员函数`getCount()`和`getSum()`,用于获取学生人数和总成绩。
7. 在`main()`函数中创建了三个学生对象`s1`、`s2`和`s3`,分别使用了无参构造函数和带参构造函数进行初始化。
8. 通过重载的输入输出运算符,实现了学生信息的输入和输出,并输出了学生人数和总成绩。
9. 通过重载的“>”运算符,比较了`s1`和`s2`的成绩高低。
阅读全文