根据给定的文件信息,我们可以总结出以下关于“设计一个大学的类系统”的知识点:
### 1. 头文件的引入
在C++程序中,`#include`语句用于引入必要的头文件,这些头文件包含了编译时所需的类型信息、函数声明等。在这个例子中,`#include <iostream>` 和 `#include <string>` 是两个重要的头文件。
- **`<iostream>`**:提供了输入输出流对象的标准库,如`cin`和`cout`。
- **`<string>`**:提供了字符串操作的功能。
此外,`using namespace std;` 表示将标准库中的命名空间`std`中的所有标识符导入到当前作用域,这样可以省略在使用`std`命名空间中的标识符(如`std::cout`)前加上`std::`。
### 2. 类的设计与实现
#### 2.1 基本类 `person`
- **属性**:`person` 类包含了姓名`name`和身份证号`id`两个私有成员变量。
- **构造函数**:提供了一个初始化成员变量的构造函数。
- **显示方法**:`display` 方法用于显示人员的基本信息。
#### 2.2 派生类 `teacher`
- **继承关系**:`teacher` 类继承自`person`类。
- **新增属性**:`teacher` 类添加了教授的科目`pro`。
- **构造函数**:提供了初始化教师信息的构造函数,并通过调用基类的构造函数来设置`person`的信息。
- **显示方法**:重写了`display`方法,以展示教师的全部信息。
#### 2.3 派生类 `student`
- **继承关系**:`student` 类同样继承自`person`类。
- **新增属性**:学生类添加了作业`homework`和学号`num`。
- **构造函数**:提供了初始化学生信息的构造函数,并通过调用基类的构造函数来设置`person`的信息。
- **显示方法**:重写了`display`方法,以展示学生的全部信息。
#### 2.4 派生类 `worker`
- **继承关系**:`worker` 类继承自`person`类。
- **新增属性**:职员类添加了工作`work`。
- **构造函数**:提供了初始化职员信息的构造函数,并通过调用基类的构造函数来设置`person`的信息。
- **显示方法**:重写了`display`方法,以展示职员的全部信息。
### 3. 主函数 `main`
- **实例化对象**:创建了`person`、`student`、`teacher` 和 `worker` 的实例。
- **调用显示方法**:通过调用每个对象的`display`方法,展示各个实例的具体信息。
### 4. 继承与多态的应用
- **继承**:通过`teacher`、`student` 和 `worker` 类从`person`类派生,实现了代码的复用。
- **多态**:通过在不同的类中重写`display`方法,实现了不同对象的统一接口调用,展示了多态性的应用。
通过以上分析可以看出,该代码实现了基于类和对象的面向对象编程思想,通过继承和多态机制有效地组织和管理了大学系统的人员信息。这样的设计不仅提高了代码的复用性,也增强了程序的扩展性和维护性。