在这个实验文档中,我们主要探讨了面向对象编程中的核心概念,包括类、对象、构造函数、析构函数、继承和访问修饰符等。下面将详细解释这些知识点。
1. **构造函数与析构函数**:
- 构造函数是类的一个特殊成员函数,用于在创建对象时初始化对象的状态。在示例中,`Tx` 类有两个构造函数,一个接受两个整数参数 `i` 和 `j`,另一个仅接受 `i`,`j` 默认为10。当创建 `t1` 和 `t2` 对象时,构造函数被调用并打印出相应的消息。
- 析构函数是对象生命周期结束时自动调用的函数,用于清理资源。在 `Tx` 类中,析构函数负责打印一条消息,表示对象正在被销毁。
2. **访问修饰符**:
- 私有成员(private)是类内部的数据成员,只能由类的成员函数访问。例如,`num1` 和 `num2` 是 `Tx` 类的私有成员,它们不能直接在 `main` 函数中被访问。
- 共有成员(public)可以被类内外的任何函数访问。`display` 函数是 `Tx` 类的公共成员,因此可以在 `main` 函数中调用。
- 受保护成员(protected)类似于私有成员,但可以被派生类的成员函数访问。
3. **拷贝构造函数**:
- 拷贝构造函数是一种特殊的构造函数,用于通过已存在的对象创建新的对象。在 C++ 中,当一个对象作为参数传递给函数,或者作为返回值返回时,可能会隐式地使用拷贝构造函数。在这个例子中,虽然没有显示定义拷贝构造函数,但默认的拷贝构造函数会复制所有成员变量的值。
4. **成员函数**:
- 示例中展示了如何定义和使用成员函数,如 `display`,用于显示对象的状态,以及在 `person` 类中定义的一系列输入和输出成员函数,用于处理人员的姓名和ID。
5. **继承**:
- 继承是面向对象编程的关键特性,允许一个类(子类)继承另一个类(基类)的属性和行为。在实验的解答部分,`student` 和 `teacher` 类都继承自 `person` 类,这样可以共享 `person` 类中的通用属性和方法,同时每个子类可以添加自己特有的属性(如 `student` 的班级ID和分数,`teacher` 的职称和部门)。
6. **多态性**(Polymorphism):
- 虽然文档没有直接提到多态性,但它是面向对象编程的另一个重要概念。通过继承和虚函数,不同类型的对象可以共享相同的接口,实现代码的重用和灵活性。在本例中,如果 `person` 类包含虚函数,那么指向 `student` 或 `teacher` 对象的指针可以调用这些虚函数,实现多态操作。
7. **类系统的实现**:
- 实验要求设计一个大学的类系统,包含 `person`、`student` 和 `teacher` 类。每个类都有特定的属性(如学生分数,教师职称)和行为(如输入和输出信息)。在给出的代码中,每个类都定义了相应的输入和输出函数,以展示类中数据成员的值。
总结来说,这个实验涵盖了C++中面向对象编程的基础知识,包括类的定义、对象的创建、构造函数和析构函数的使用、访问控制、继承以及简单的类系统设计。这些概念构成了面向对象编程的核心,对于理解和编写面向对象的程序至关重要。