第 12 周实验指导
【目的】
1. 进一步掌握类的派生与继承的概念、应用方法
2. 掌握继承方式对成员访问权限的影响
3. 掌握虚基类的用法
【提醒】
最近几周同学们看老贺博客上提供的参考解答少了。除了完成任务本身之外,老贺的解答中更
多提醒了易犯的错误,还请抽时间阅读、体会。在自己做题的基础上,再看老师的讲解,就这
一得瑟,收益倍增。
【任务 0】(不必提交报告。这部分不想清楚会觉得绕,但将基本原则掌握了,也不过如此。)
(1)完成教材 P391 习题 5 和习题 6 中的任务。BB 平台中的文本列出了程序代码,请自行改造
程序,创建验证题目中涉及问题的情境,检验自己的答案是否正确。
(2)完成教材 P393 习题 7 和习题 8 中的任务。BB 平台中的文本列出了程序代码,请运行程序,
并和自己的答案进行对照。
【任务 1】理解基类中成员的访问限定符和派生类的继承方式
由下面派生类 Student1 对基类 Student 的继承……
(1)请修改基类中成员的访问限定符和派生类的继承方式,考虑可能的运行结果或可能出现的
错误,并在上机时进行验证、对比,达到理解派生类成员的访问属性的目的。
(2)总结(1)的结果,将(1)的结果摘要写到报告博文中;最后用自己的话总结确定派生类
成员的访问属性的原则,也写到报告博文中。
(代码类似 P363 例 11.5,上机准备阶段可以研究这段代码,BB 平台中提供实验用代码。)
【任务 2】(教材 P394 习题 9)分别定义 Teacher( 教师)类和 Cadre(干部)类,采用多重继承方
式由这两个类派生出新类 Teacher_Cadre(教师兼干部)。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在 Tea c her 类中还包含数据成员 title(职称),在 Cadre 类中还包含数据成员 post(职务),
在 Teacher_Cadre 类中还包含数据成员 wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数
据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类 Teacher_Cadre 的成员函数 show 中调用 Teac her 类中的 display 函数,输出姓名、
年龄、性别、职称、地址、电话,然后再用 cout
语句输出职务与工资。
【任务 3】在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,
摩托车类的基类为自行车类和机动车类,类之间均为公有继承。
(1)根据上面各类间关系的描述,补全下面程序段中空缺的代码
(2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示。
(3)运行程序,享受开摩托的过程。(BB 平台上提供了一个可执行文件,可以先运行再编程。
不必申请驾照,这个摩托车很安全。)
(4)在报告中回答问题:本题中使用虚基类的好处是什么?