下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年无人零售行业应用前景报告
- 大学医学教学中医学伦理与临床决策的实践课题报告教学研究课题报告
- 2025年成人学历教育转型成本效益分析报告
- 数字化平台在高校学生创新能力评价中的应用与模式创新教学研究课题报告
- 2026年禁毒知识竞赛试卷及答案(一)
- 2026年零碳园区综合能源项目可行性研究报告
- 2025年光伏逆变器并网五年热管理技术报告
- 2026年青海宝鉴堂国药有限公司招聘备考题库完整参考答案详解
- 安全生产常识培训课件
- 安全生产培训
- DB6301∕T 4-2023 住宅物业星级服务规范
- 护理查房与病例讨论区别
- 公司特殊贡献奖管理制度
- T/CA 105-2019手机壳套通用规范
- 2025-2031年中国汽车维修设备行业市场全景评估及产业前景研判报告
- 门窗拆除合同协议书范本
- GB/T 1040.1-2025塑料拉伸性能的测定第1部分:总则
- 重症胰腺炎的中医护理
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 2024年高中语文选择性必修上册古诗文情境式默写(含答案)
- 中央2025年全国妇联所属在京事业单位招聘93人笔试历年参考题库附带答案详解-1
评论
0/150
提交评论