




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考语文一轮复习:文学类文本阅读 讲义
- 河北省邢台市2024-2025学年高二上学期期末英语测试试题【含答案】
- 2025届江西省等九师联盟高三上学期1月期末联考英语试题【含答案】
- 2024-2025学年高中历史 第三单元 欧美资产阶级革命时代的杰出人物 第1课 英国革命的领导者克伦威尔(2)教学教学实录 新人教版选修4
- 2 丁香结 第二课时 教学设计-2024-2025学年语文六年级上册统编版
- 电影娱乐产业在线票务系统开发
- 电子元器件基础知识与选购操作手册(含图解)
- 区块链技术在环保领域的应用预案
- 2023一年级数学上册 八 认识钟表(小明的一天)配套教学实录 北师大版
- 本科毕业论文完整范文(满足查重要求)人工智能时代行政执法监督的变迁与应对
- 大模型应用服务平台建设研究
- 2025年度智慧养老服务平台开发与运营服务合同
- 2025年湖南科技职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025中国铁塔甘肃分公司社会招聘60人易考易错模拟试题(共500题)试卷后附参考答案
- 2025社区医保工作计划
- 2025年河南中烟工业限责任公司大学生招聘笔试高频重点提升(共500题)附带答案详解
- 社会责任内审评估报告表
- 农村土地流转合同范本
- 个人借款分期还款合同
- 道德与法治研修日志
- 船舶起重吊装作业安全方案
评论
0/150
提交评论