定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入/输出的成员函数。在此基础上派生出学生类Cstudent(增加成绩)和教师类CTeacher(增加教龄),并实现对学生和教师信息的输入/输出。 (请大家在派生类中使用base关键字)
时间: 2024-10-21 15:08:38 浏览: 109
在C++中,我们可以创建一个名为CPerson的基础类,然后分别从它派生出CStudent和CTeacher两个特定的子类。以下是相关的类定义及成员函数:
```cpp
// 基础类CPerson
class CPerson {
private:
string name; // 姓名
int id; // 编号
char gender; // 性别
public:
// 构造函数
CPerson(const string& n, int i, char g) : name(n), id(i), gender(g) {}
// 输入/输出函数
void input() {
cout << "Name: " << name << ", ID: " << id << ", Gender: " << (gender == 'M' ? "Male" : "Female") << endl;
}
void output() {
cout << "Name: " << name << ", ID: " << id << ", Gender: " << gender << endl;
}
};
// 派生类CStudent
class CStudent : public CPerson {
private:
float score; // 成绩
public:
// 构造函数,接受基础类的信息和成绩
CStudent(const string& n, int i, char g, float s) : CPerson(n, i, g), score(s) {}
// 输出函数,包含成绩
void output() override {
CPerson::output();
cout << "Score: " << score << endl;
}
};
// 派生类CTeacher
class CTeacher : public CPerson {
private:
int experienceYears; // 教龄
public:
// 构造函数,接受基础类的信息和教龄
CTeacher(const string& n, int i, char g, int e) : CPerson(n, i, g), experienceYears(e) {}
// 输出函数,包含教龄
void output() override {
CPerson::output();
cout << "Experience Years: " << experienceYears << " years" << endl;
}
};
```
在这个例子中,我们使用了`public`关键字继承自`CPerson`,并在派生类中添加了额外的数据成员,并覆盖了基础类的`output()`函数,以便显示更具体的子类信息。
阅读全文