西安交大C++继承与类设计实验报告:教师类实现
版权申诉
5星 · 超过95%的资源 26 浏览量
更新于2024-06-29
1
收藏 521KB PDF 举报
本资源是一份西安交通大学计算机程序设计课程的第九章实验报告,专注于继承的概念和应用。实验的主要目标是让学生熟练掌握C++中继承的使用方法,通过实际编程训练类的设计和不同继承方式对基类成员访问控制的理解。具体内容分为两个部分:
**一、实验目的**
1. 熟练掌握类的继承技术,包括如何创建和使用派生类。
2. 深入理解基类和派生类之间的关系,特别是对基类成员的访问控制,包括公有(public)、保护(protected)和私有(private)属性和方法的使用。
3. 实践中增加新的类特性,如在题目中提到的教师类(Teacher),它继承自Person类,并添加了专业(zhuanye)、职称(zhicheng)和主讲课程(course)这三个新属性,以及与之相关的注册(Register)和打印(print)方法。
**二、实验内容**
1. **第一题:继承与属性和方法的定义**
- 创建一个名为Teacher的派生类,它从Person类继承而来。在Teacher类中,新增的属性包括专业名、职称和主讲课程的指针变量。
- 实现`Teacher()`构造函数,用于初始化基类属性并可能设置新的派生类属性。
- 定义`Register()`方法,用于设置新的教师属性值,包括名字、性别、年龄、专业、职称和课程。
- 实现`~Teacher()`析构函数,确保动态分配的内存被正确释放。
- `print()`方法则用于展示教师的所有信息,包括基类和派生类属性。
例如,Teacher类的部分代码如下:
```cpp
Teacher::Teacher()
{
Person::Register(name, sex, age); // 调用基类的构造函数
zhuanye = new char[strlen(name) + 1]; // 动态分配存储专业名的空间
strcpy(zhuanye, name); // 复制名字到新分配的内存
// 同理处理职称和课程
}
void Teacher::Register(char* name, char sex, int age, char* zhuanye, char* zhicheng, char* course)
{
Person::Register(name, sex, age); // 继承基类的注册方法
// 更新派生类属性
}
void Teacher::print()
{
Person::print(); // 先打印基类信息
cout << "\t专业:" << zhuanye << "\t职称:" << zhicheng << "\t主讲课程:" << course << endl;
}
```
总结来说,这份作业要求学生在C++环境中运用继承机制来扩展一个基本的Person类,以创建更具体的Teacher类,并在实践中掌握如何访问和管理基类和派生类的属性及方法。通过完成此类任务,学生不仅能提升编程技能,还能加深对面向对象编程中继承概念的理解。
2022-06-18 上传
2022-11-16 上传
2021-10-12 上传
2022-06-17 上传
G11176593
- 粉丝: 6917
- 资源: 3万+
最新资源
- Incella.j9yaot4wdx.gaIrlSz
- ecolab:基于高性能代理的C ++建模系统
- vmx-test-lab:用于构建基于vMX的测试实验室的NITA项目
- spring-beans-1.2.8,java编程思想源码,java智能社区管理系统
- [removed]用户注册验证
- Generic-Resource-Monitor:酷人的酷资源监控器
- petsunlimited.github.io:投资组合网站
- matrixprofile:一个Python 3库,利用矩阵配置文件算法进行时间序列数据挖掘任务,每个人都可以使用
- psc
- DirectToEmployer
- DELFI 超声模拟工具:用于模拟来自给定超声系统的场的工具-matlab开发
- jsp-player,java集合源码,java源码编码格式
- robot-gladiators
- ansible-kpi:KPI Formbuilder的角色
- Donya:Donya是一个操作系统。 使用软件包管理系统构建的另一个Linux发行版
- TheCircle:The Circle的翻版