- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计实验答案_继承与派生课案
实验07 继承与派生(4学时)
(第7章 继承与派生)
一、实验目的
(1) 学习声明和使用类的继承关系,声明派生类。
(2) 熟悉不同继承方式下对基类成员的访问控制。
(3) 学习利用虚基类解决二义性问题。
二、实验任务
7_1 声明一个基类Animal。
有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
7_2 声明一个基类BaseClass。
有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
7_3 声明一个车(vehicle)基类。
具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
7_4 以实验6中的People(人员)类为基类。
派生出student(学生)类,添加属性:班号char classNo[7];
派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。
从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser;
从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。
类之间的关系如图7-1所示。
图7-1 类图
三、实验步骤
1.(编程)声明基类Animal,成员变量age声明为私有的。
构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:(注:在桌面创建一个文本文件,将输出框的内容复制到文本文件中,再复制到Word文件中,不会出现汉字的乱码)
用private时的结果:
1------ 已启动生成: 项目: cpp, 配置: Debug Win32 ------
1生成启动时间为 2013-2-18 11:10:35。
1InitializeBuildStatus:
1 正在创建“Debug\cpp.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1ClCompile:
1 main.cpp
1f:\projects\cpp\cpp\main.cpp(13): error C2248: “Animal::age”: 无法访问 private 成员(在“Animal”类中声明)
1 f:\projects\cpp\cpp\main.cpp(8) : 参见“Animal::age”的声明
1 f:\projects\cpp\cpp\main.cpp(5) : 参见“Animal”的声明
1f:\projects\cpp\cpp\main.cpp(14): error C2248: “Animal::age”: 无法访问 private 成员(在“Animal”类中声明)
1 f:\projects\cpp\cpp\main.cpp(8) : 参见“Animal::age”的声明
1 f:\projects\cpp\cpp\main.cpp(5) : 参见“Animal”的声明
1
1生成失败。
1
1已用时间 00:00:03.28
========== 生成: 成功 0 个,失败 1 个,必威体育精装版 0 个,跳过 0 个 ==========
把age改为公有变量后重新编译就可以了。程序名:lab7_1.cpp。
★ 程序及运行结果:
//lab7_1.cpp
#include iostream
using namespace std;
class Animal{
private: //private时出错
//public://public和protected正确
int age;
};
class dog:public Animal{
public:
void SetAge(int n){ age=n; }
int GetAge(){ return age; }
};
void main()
{ dog d; d.SetAge(3); coutAge=d.GetA
您可能关注的文档
- c++4自定义数据类型信息学竞赛、C++编程初学者.ppt
- c++11流类库与输入输出.ppt
- BW数据仓库模型创建注意事项.docx
- C++上机实验报告实验三.docx
- C++二叉树结构的建立与基本操作.doc
- c++作业题.doc
- c++_栈和队列.ppt
- b、施工组织设计(中泰)三联.doc
- C++复习.doc
- C++复习题+答案.docx
- 建筑艺术学习中的建筑结构设计与建筑装饰艺术教学研究课题报告.docx
- 应付会计的培训.pptx
- 小学数学实践活动对初中数学学习的促进研究教学研究课题报告.docx
- 小学语文课题报告探究古代诗词的艺术表现与内涵教学研究课题报告.docx
- 高中地理课堂中的地球环境保护教育探索教学研究课题报告.docx
- 引领医疗新纪元:医用材料革新-解析新型医用材料的潜力与挑战.pptx
- 体验式学习对学生学习兴趣的激发研究教学研究课题报告.docx
- 初中生物实验纳米结构调控下的细胞分裂过程研究教学研究课题报告.docx
- 生物多样性保护与生态系统平衡研究教学研究课题报告.docx
- 绿色管道:环保挑战与对策-提升管道运输环保性能的新路径.pptx
文档评论(0)