定义一个人员类CPersion,包括:(1)数据成员姓名、编号、性别;和(2)用于输入/输出的成员函数; 在此基础上派生出两个类:学生类CStudent,增加成绩;和 教师类CTeacher,增加教龄;并实现对学生和教师信息的输入/输出。
时间: 2024-10-07 10:07:00 浏览: 94
首先,我们定义一个名为`CPerson`的基础人员类,包含姓名(name)、编号(id)和性别的基本属性:
```cpp
class CPerson {
private:
std::string name;
int id;
char gender; // 'M' for male, 'F' for female
public:
// 构造函数
CPerson(const std::string& n, int i, char g) : name(n), id(i), gender(g) {}
// 输入成员函数
void input() {
std::cout << "Name: " << name << ", ID: " << id << ", Gender: " << gender << std::endl;
}
// 输出成员函数
void output() const {
std::cout << "Name: " << name << ", ID: " << id << ", Gender: " << gender << std::endl;
}
};
```
然后,我们创建两个派生类:`CStudent` 和 `CTeacher`,分别添加了对应的数据成员:
```cpp
class CStudent : public CPerson {
private:
float grade;
public:
CStudent(const std::string& n, int i, char g, float g1) : CPerson(n, i, g), grade(g1) {}
// 输出成员函数,显示成绩
void output() const override {
CPerson::output();
std::cout << "Grade: " << grade << std::endl;
}
};
class CTeacher : public CPerson {
private:
int teaching_years;
public:
CTeacher(const std::string& n, int i, char g, int y) : CPerson(n, i, g), teaching_years(y) {}
// 输出成员函数,显示教龄
void output() const override {
CPerson::output();
std::cout << "Teaching Years: " << teaching_years << std::endl;
}
};
```
现在我们可以对这两种类型的对象进行输入和输出操作:
```cpp
int main() {
CStudent student("张三", 001, 'M', 85.0);
student.input(); // 输出学生的信息
student.output(); // 输出学生的信息,包括成绩
CTeacher teacher("李四", 002, 'F', 10);
teacher.input(); // 输出教师的信息
teacher.output(); // 输出教师的信息,包括教龄
return 0;
}
```
阅读全文