定义一个学生类Student,该类有姓名、学号、年龄、专业等私有成员。除此之外,该类还有一个静态数据成员NUM。为该类定义必要的成员函数,包括构造函数和其他函数。 构造函数要负责对学生的姓名、年龄和专业进行初始化,而学号则需要在NUM的基础上进行自动编号。第一个学生的学号是20200001,第二个学生的学号是20200002,依次类推。 在main函数中创建学生对象并输出相关信息。
时间: 2024-02-26 17:57:56 浏览: 191
好的,根据您的要求,我来为您实现一个学生类,并且在`main`函数中创建学生对象并输出相关信息。
```c++
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
string id;
int age;
string major;
static int NUM;
public:
Student(string n, int a, string m) {
name = n;
age = a;
major = m;
id = "2020" + to_string(NUM + 1);
NUM++;
}
string getName() const {
return name;
}
void setName(string n) {
name = n;
}
string getId() const {
return id;
}
void setId(string i) {
id = i;
}
int getAge() const {
return age;
}
void setAge(int a) {
age = a;
}
string getMajor() const {
return major;
}
void setMajor(string m) {
major = m;
}
static int getNum() {
return NUM;
}
};
int Student::NUM = 0;
int main() {
Student s1("Tom", 21, "Computer Science");
Student s2("Jerry", 22, "Mathematics");
cout << "s1: " << s1.getName() << ", " << s1.getId() << ", " << s1.getAge() << ", " << s1.getMajor() << endl;
cout << "s2: " << s2.getName() << ", " << s2.getId() << ", " << s2.getAge() << ", " << s2.getMajor() << endl;
return 0;
}
```
在这个实现中,我们在类定义中定义了静态数据成员`NUM`,用于记录创建的`Student`对象数量。在构造函数中,我们根据传入的参数初始化学生的姓名、年龄和专业,并且根据`NUM`自动编号生成学号。
在`main`函数中,我们分别创建了两个学生对象`s1`和`s2`,并且输出了它们的姓名、学号、年龄和专业信息。因为`s1`和`s2`是分别创建的,所以它们的学号也是不同的,符合自动编号的要求。
输出结果如下:
```
s1: Tom, 20200001, 21, Computer Science
s2: Jerry, 20200002, 22, Mathematics
```
阅读全文