西安交大C++继承与类设计实验报告:教师类实现

版权申诉
5星 · 超过95%的资源 1 下载量 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类,并在实践中掌握如何访问和管理基类和派生类的属性及方法。通过完成此类任务,学生不仅能提升编程技能,还能加深对面向对象编程中继承概念的理解。