用c++写程序定义一个人员类Person,包括姓名、性别、年龄等数据成员和用于输入、输出的成员函数,设计构造函数完成数据初始化操作。在此基础上派生出学生类Student类(增加成绩)和教师类Teacher(增加教龄),并实现对学生和教师信息的输入和输出。
时间: 2024-10-27 19:04:07 浏览: 20
在 C++ 中,你可以通过创建一个名为 Person 的基类,然后派生出两个子类 Student 和 Teacher 来实现这个需求。以下是简单的代码示例:
```cpp
#include <iostream>
#include <string>
// 定义基类 Person
class Person {
public:
// 数据成员
std::string name;
char gender;
int age;
// 构造函数完成数据初始化
Person(std::string n, char g, int a) : name(n), gender(g), age(a) {}
// 输入和输出成员函数
void input() const {
std::cout << "Name: " << name << ", Gender: " << gender << ", Age: " << age << std::endl;
}
void output() const {
std::cout << "Name: " << name << ", Gender: " << gender << ", Age: " << age << std::endl;
}
};
// 派生类 Student
class Student : public Person {
public:
float score; // 添加成绩数据成员
// 子类的构造函数
Student(std::string n, char g, int a, float s) : Person(n, g, a), score(s) {}
void input() const override { // 覆盖基类的 input 函数
Person::input();
std::cout << "Score: " << score << std::endl;
}
void output() const override { // 覆盖基类的 output 函数
Person::output();
std::cout << "Score: " << score << std::endl;
}
};
// 派生类 Teacher
class Teacher : public Person {
public:
int years_of_experience; // 添加教龄数据成员
// 子类的构造函数
Teacher(std::string n, char g, int a, int e) : Person(n, g, a), years_of_experience(e) {}
void input() const override { // 覆盖基类的 input 函数
Person::input();
std::cout << "Years of Experience: " << years_of_experience << std::endl;
}
void output() const override { // 覆盖基类的 output 函数
Person::output();
std::cout << "Years of Experience: " << years_of_experience << std::endl;
}
};
int main() {
// 创建实例并进行输入输出
Student student("Alice", 'F', 20, 85);
student.input(); // 输出学生信息
student.output();
Teacher teacher("Bob", 'M', 35, 10);
teacher.input(); // 输出教师信息
teacher.output();
return 0;
}
```
阅读全文