




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z.实验四 派生类与继承【实验类型】验证性实验 【实验课时】2学时 【实验目的】1 理解类的继承的概念,能够定义和使用类的继承关系。2 掌握派生类的声明与定义方法。3 熟悉公有派生和私有派生的访问特性。4 学习虚基类在解决二义性问题中的作用。【实验环境】硬件:计算机软件:Microsoft Visual C+ 6.0【实验容】1、按要求阅读、编写、调试和运行以下程序。(1)实验容定义一个基类MyArray,基类中可以存放一组整数。class MyArraypublic: MyArray(int leng); MyArray(); void Input(); void Display();
2、protected:long int *alist; / 指向动态申请的一组空间int length; / 整数的个数基类中有构造函数、析构函数、输入数据和输出数据的函数。定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。定义一个类AverArray继承自MyArray ,在该类中定义函数Aver求解整数的平均值。定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声
3、明为虚基类,体会虚基类在解决二义性问题中的作用。2实验程序 (参考)程序如下:#include iostream.h#include process.hclass MyArraypublic: MyArray(int leng); MyArray(); void Input(); void Display();protected:long int *alist; / 指向动态申请的一组空间int length; / 整数的个数;MyArray:MyArray(int leng)length=leng; alist=new long intlength; if(alist=NULL) cout对
4、不起,创立失败。请重试。;e*it(1); MyArray:MyArray() delete alist; cout数组被清空。endl; void MyArray:Display() / 显示数组容 int i; long int *p=alist; for (i=0;ilength;i+,p+) cout *p;void MyArray:Input() / 从键盘假设干整数 cout请输入:length个整数:; int i; long int *p=alist; for(i=0;i*p;class SortArray:virtual public MyArray private: int
5、 len; long int *sp;public: SortArray(int leng):MyArray(leng) len=leng; Sort(); ; void Sort() sp=new long intlen;long int q;sp=alist;for(int i=0;ilen;i+) for(int j=0;j*(sp+j+1) q=*(sp+j); *(sp+j)=*(sp+j+1); *(sp+j+1)=q; ;class ReArray:virtual public MyArray / 这里是虚基类,public: void Reverse() rp=new long
6、 intlen; long int q; rp=alist;for(int i=0;ilen/2;i+)q=*(rp+i); *(rp+i)=*(rp+len-i-1); *(rp+len-i-1)=q; ReArray(int leng):MyArray(leng) len=leng; Reverse(); private: int len; long int *rp;class AverArray:virtual public MyArray / 这里是虚基类,public: double Aver() ap=new long intlen; double q=0; ap=alist; f
7、or(int i=0;ilen;i+) q=q+*ap;ap+; q=q/len; return q; AverArray(int leng):MyArray(leng) len=leng; private:int len;long int *ap;class NewArray:public ReArray,public SortArray,public AverArray public: NewArray(int leng); NewArray();NewArray:NewArray(intleng):MyArray(leng),SortArray(leng),ReArray(leng),A
8、verArray(leng) coutn新数组正在创立。n;NewArray:NewArray() coutn新数组已被清空。n;void main() char b; int leng; do cout请输入数组长度:leng; while(leng=0) coutleng; coutn开场:n; NewArray n(leng); n.Input(); coutn您输入的数组为:endl; n.Display(); / 显示数组 n.Reverse(); /显示逆序 coutn倒序数组为:endl; n.Display(); / 显示逆转以前的情况 coutn平均值是:n.Aver()en
9、dl;/求平均值 n.Sort(); /排序 coutn排序后从小到大数组为:endl; n.Display(); / 显示排序以后的情况 coutnA继续 Q退出b; while(b=A|b=a);执行结果为:2、编写一个学生和教师数据输入和显示程序。1实验容编写学生和教师数据输入和显示程序,学生数据有编号、班号和成绩,教师数据有编号、职称和部门。要求将编号、输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类。2实验程序参考#includeclass person protected:int m;char A20;char *name;
10、 public:void input()coutm;coutA; name=&A0; void display() cout编号:mendl;cout:nameendl; ; class student:public person protected: int classnum, mark;public: void input1() cout输入一个学生数据:endl;input();coutclassnum;coutmark; void display1()cout显示一个学生的数据:endl;display();cout班号:classnumendl;cout成绩:markendl; ;c
11、lass teacher: public personprotected: char zhicheng20,bumen20; char *p; public: void input2() cout显示一个教师的数据:endl; input(); coutzhicheng; coutbumen; void display2() cout显示一个教师的数据:endl; display(); p=&zhicheng0;cout职称:pendl; p=&bumen0; cout部门:pendl; ; void main() student S;teacher T; S.input1(); T.input2(); S.display1(); T.display2(); 【实验提示】继承是面向对象程序设计的一个重要特性,它允许在已有类的根底上创立新的类,新类可以从一个或多个既有类中继承函数和数据,而且可以重新定义或加进新的数据和函数,从而形成类的层次或等级。实验1中着重时在这方面进展练习,除了需要熟练掌握派生类的声明和定义,还需要灵活运用公有派生和私有派生来解决实际问题。虚基类用于想把公共的基类只产生一个拷贝时,它的初始化与一般的多继承的初始化在语法上是一样的,但是构造函数的调用顺序不同。C+编程中派生类可以被基类指针引用,这叫向后兼容,可以提高程序的可扩大性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 撬动新质生产力
- 佳木斯新质生产力
- 浙江国企招聘2025年台州市椒江区属国有企业招聘特殊人才及职业经理人6人笔试参考题库附带答案详解
- 社旗县高一数学试卷及答案
- 沙溪期中考试试卷及答案
- 2025工程合同附加协议范本
- 动物胶在户外运动装备材料中的耐候性考核试卷
- 罐装水生产设备选型与性能评估方法考核试卷
- 海洋油气开发工程建筑信息化管理考核试卷
- 矿山企业文化与团队建设考核试卷
- 设备维护保养记录表(范本模板)
- 电动汽车火灾预防
- 热再生沥青路面
- 三查四定表完整版本
- 信息检索与利用智慧树知到课后章节答案2023年下石河子大学
- 体育社会学课件第八章社会生活中的体育运动
- 足浴店禁止涉黄技师协议书
- 第2章整式加减-整式的化简求值课件沪科版数学七年级上册
- 九年级英语复习教案
- 肝癌肝移植的问题与策略课件
- (2023年)甘肃省张掖市【辅警协警】笔试测试卷(含答案)
评论
0/150
提交评论