版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四派生类与继承【实验类型】验证性实验【实验课时】2 学时【实验目的】(1)理解类的继承的概念,能够定义和使用类的继承关系。(2)掌握派生类的声明与定义方法。(3)熟悉公有派生和私有派生的访问特性。(4)学习虚基类在解决二义性问题中的作用。【实验环境】硬件:计算机软件:Microsoft Visual C+ 6.0【实验内容】1、按要求阅读、编写、调试和运行以下程序。(1)实验内容1定义一个基类 MyArray,基类中可以存放一组整数。class MyArraypublic:MyArray(i nt len g);MyArray();void In put();void Display。;p
2、rotected:long int *alist;/指向动态申请的一组空间int length;/整数的个数基类中有构造函数、析构函数、输入数据和输出数据的函数。2定义一个类 SortArray 继承自 MyArray,在该类中定义函数实现排序功能。3定义一个类 ReArray 继承自 MyArray,在该类中定义函数实现逆转功能。4定义一个类 AverArray 继承自 MyArray,在该类中定义函数 Aver 求解整数的平均值。5定义 NewArray 类,同时继承了 SortArray, ReArray 和 AverArray,使得 NewArray 类的对象同时具有排序、逆转、和求平
3、均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。(2)实验程序(参考)程序如下:#i nclude iostream.h#in clude process.hclass MyArraypublic:MyArray(i nt le ng);MyArray();void In put();void Display。;protected:long int *alist;/指向动态申请的一组空间int length;/整数的个数;MyArray:MyArray(i nt leng)len gth=le ng;alist=new long in tle ngth;if(ali
4、st=NULL)cout对不起,创建失败。请重试。;exit(1);MyArray:MyArray()delete alist;cout数组被清空。endl;void MyArray:Display() / 显示数组内容int i;long int *p=alist;for (i=0;ile ngth;i+,p+)cout *p;void MyArray:Input()/ 从键盘若干整数cout请输入:length 个整数:;int i;long int *p=alist;for(i=0;ile ngth;i+,p+)ci n*p;class SortArray: virtual public
5、 MyArrayprivate:int len;long int *sp;public:SortArray(i nt le ng):MyArray(le ng)Ien=leng;Sort();;void Sort() sp=new long in tle n; long int q;sp=alist;for(i nt i=0;ile n; i+) for(i nt j=O;j*(sp+j+1)q=*(sp+j);*(sp+j)=*(sp+j+1); *(sp+j+1)=q;;class ReArray: virtual public MyArray/这里是虚基类,public:void Rev
6、erse()rp=new long in tle n;long int q;rp=alist;for(i nt i=0;ile n/2;i+)q=* (rp+i);*(rp+i)=*(rp+le n-i-1); *(rp+le n_i_1)=q;ReArray(i nt len g):MyArray(le ng) len=leng;Reverse();private:int len; long int *rp;;class AverArray:virtual public MyArray/这里是虚基类,public:double Aver()ap=new long in tle n;doubl
7、e q=0;ap=alist;for(i nt i=0;ile n;i+)q=q+*ap;ap+;q=q/le n;return q;AverArray(i nt le ng):MyArray(le ng)len=leng;private:in t le n;long int *ap;class NewArray:public ReArray,public SortArray,public AverArray public:NewArray(i nt len g);NewArray();NewArray:NewArray(i ntle ng):MyArray(le ng),SortArray(
8、le ng),ReArray(le ng),AverArray(le ng)coutn 新数组正在创建。n;NewArray:NewArray()coutn 新数组已被清空。n;void mai n()char b; int leng; docout请输入数组长度: le ng;while(le ng=0) cout le ng; coutn 开始:n; NewArray n (le ng);n.ln put();coutn 您输入的数组为:e ndl;n.Display();/ 显示数组n.Reverse。;/ 显示逆序coutn 倒序数组为:e ndl;n.Display。;/显示逆转以前
9、的情况coutn 平均值是: n. Aver()e ndl;/ 求平均值 n.Sort();/ 排序coutn 排序后(从小到大)数组为: e ndl;n.Display。;/显示排序以后的情况coutnA继续 Q退出 b;while(b=A|b=a);执行结果为:2、编写一个学生和教师数据输入和显示程序。(1) 实验内容编写学生和教师数据输入和显示程序,学生数据有编号、班号和成绩,教师数据有编号、职称和部门。要求将编号、姓名输入和显示设计成一个类person ,并作为学生数据操作类 student 和教师数据操作类 teacher 的基类。(2) 实验程序(参考)#in cludeclass
10、 pers onprotected: int m;char A20; char *n ame;public:void in put()cout编号:;cinm;cout A;name=&A0;void display。cout编号:mendl; cout : nameendl;class stude nt:public pers onprotected:int class num, mark;public:void in put1()cout输入一个学生数据:endl;in put();cout class num;cout mark;void display1()cout显示一个学生
11、的数据 :endl; display();cout班号:classnumendl; cout成绩:markendl;class teacher: public pers onprotected:char zhiche ng20,bume n20;char *p;public:void in put2()cout显示一个老师的数据 :endl;in put(); cout zhiche ng; cout bume n;void display2()cout显示一个老师的数据 :endl; display();p=& zhiche ng0;cout职称:pendl;p=&bume
12、n 0;cout部门:pendl;void mai n()stude nt S;teacher T;S. i nput1();T. i nput2();S. display1();T. display2();【实验提示】继承是面向对象程序设计的一个重要特性,它允许在已有类的基础上创建新的类,新类可以从一个或多个既有类中继承函数和数据,而且可以重新定义或加进新的数据和函数,从而形成类的层次或等级。 实验 1 中着重时在这方面进行练习,除了需要熟练掌握派生类的声明和定义,还需要灵活运用公有派生和私有派生来解决实际问题。虚基类用于想把公共的基类只产生一个拷贝时,它的初始化与一般的多继承的初始化在语法上是一样的,但是构造函数的调用顺序不同。C+编程中派生类可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国均苯四甲酸二酐产业前景趋势展望及投资战略决策报告
- 2024-2030年中国发动机轴承橡胶模行业市场运营模式及未来发展动向预测报告
- 2024年生态修复工程用草种采购合同
- 2024年生态旅游区门面房买卖合同范本3篇
- 2024年版地下水开采合同3篇
- 2024年珠宝首饰租赁协议2篇
- 2024年企事业单位食堂餐饮承包合同及员工餐饮健康促进3篇
- 2018企业首席质量官培训考核试题(综合卷)
- 2024年标准离婚股权分割合同模板版B版
- 2025年深圳从业资格证货运模拟考试下载
- Unit 7单元教案 2024-2025学年人教版(2024)七年级英语上册
- Unit 6 My sweet home(教学设计)-2024-2025学年外研版(三起)(2024)小学英语三年级上册
- 北师大版教案正比例函数案例分析
- 行政文秘笔试题
- 人教版(2024)七年级地理上册跨学科主题学习《探索外来食料作物传播史》精美课件
- 2024-2025学年七年级数学上册第一学期 期末模拟测试卷(湘教版)
- 职业素质养成(吉林交通职业技术学院)智慧树知到答案2024年吉林交通职业技术学院
- 《红楼梦》第5课时:欣赏小说人物创作的诗词(教学教学设计)高一语文同步备课系列(统编版必修下册)
- 【新教材】苏科版(2024)七年级上册数学第1-6章全册教案设计
- 天津2024年天津市应急管理局招聘应急管理综合行政执法专职技术检查员笔试历年典型考题及考点附答案解析
- 工业物联网(IIoT)行业发展全景调研与投资趋势预测研究报告
评论
0/150
提交评论