试验四继承与派生_第1页
试验四继承与派生_第2页
试验四继承与派生_第3页
试验四继承与派生_第4页
试验四继承与派生_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验四派生类与继承【实验类型】验证性实验【实验课时】2学时【实验目的】(1)理解类的继承的概念,能够定义和使用类的继承关系.(2)掌握派生类的声明与定义方法.(3)熟悉公有派生和私有派生的访问特性.(4)学习虚基类在解决二义性问题中的作用.【实验环境】硬件:计算机软件:MicrosoftVisualC+6.0【实验内容】1、按要求阅读、编写、调试和运行以下程序.(1)实验内容定义一个基类MyArray,基类中可以存放一组整数.classMyArraypublic:MyArray(intleng);MyArray();voidInput();voidDisplay.;protected:long

2、int*alist;/指向动态申请的一组空间intlength;/整数的个数基类中有构造函数、析构函数、输入数据和输出数据的函数.定义一个类SortArray继承自MyArray,在该类中定义函数实现排序功能.定义一个类ReArray继承自MyArray,在该类中定义函数实现逆转功能.定义一个类AverArray继承自MyArray,在该类中定义函数Aver求解整数的平均值.定义NewArray类,同时继承了SortArray,ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能.在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用.(

3、2)实验程序(参考)程序如下:#includeiostream.h#includeprocess.hclassMyArraypublic:MyArray(intleng);MyArray();voidInput();voidDisplay();protected:longint*alist;/指向动态申请的一组空间intlength;/整数的个数;MyArray:MyArray(intleng)length=leng;alist=newlongintlength;if(alist=NULL)cout对不起,创立失败.请重试.;exit(1);MyArray:MyArray()deleteali

4、st;cout数组被1#空.endl;voidMyArray:Display()/显示数组内容inti;longint*p=alist;for(i=0;ilength;i+,p+)cout*p;voidMyArray:Input()/从键盘假设干整数cout请输入:length个整数:;inti;longint*p=alist;for(i=0;i*p;classSortArray:virtualpublicMyArrayprivate:intlen;longint*sp;public:SortArray(intleng):MyArray(leng)len=leng;Sort(););voidS

5、ort()(sp=newlongintlen;longintq;sp=alist;for(inti=0;ilen;i+)(for(intj=0;j*(sp+j+1)(q=*(sp+j);*(sp+j)=*(sp+j+1);*(sp+j+1)=q;);classReArray:virtualpublicMyArray(/这里是虚基类,public:voidReverse()(rp=newlongintlen;longintq;rp=alist;for(inti=0;ilen/2;i+)(q=*(rp+i);*(rp+i)=*(rp+len-i-1);*(rp+len-i-1)=q;)ReArra

6、y(intleng):MyArray(leng)(len=leng;Reverse();private:intlen;longint*rp;);classAverArray:virtualpublicMyArray/这里是虚基类,public:doubleAver()ap=newlongintlen;doubleq=0;ap=alist;for(inti=0;ilen;i+)q=q+*ap;ap+;)q=q/len;returnq;)AverArray(intleng):MyArray(leng)len=leng;)private:intlen;longint*ap;);classNewArr

7、ay:publicReArray,publicSortArray,publicAverArraypublic:NewArray(intleng);NewArray(););NewArray:NewArray(intleng):MyArray(leng),SortArray(leng),ReArray(leng),AverArray(leng)coutn新数组正在创立.n;)NewArray:NewArray()coutn新数组已被清空.n;)voidmain()charb;intleng;do(cout请输入数组长度:leng;while(leng=0)(coutleng;coutn开始:n;

8、NewArrayn(leng);n.Input();coutn您输入的数组为:endl;n.Display();/显示数组n.Reverse();/显示逆序coutn倒序数组为:endl;n.Display();/显示逆转以前的情况coutn平均值是:n.Aver()endl;求平均值n.Sort();/排序coutn排序后(从小到大)数组为:endl;n.Display();/显示排序以后的情况coutnA继续Q退出b;while(b=A|b=a);执行结果为:2、编写一个学生和教师数据输入和显示程序.(1)实验内容编写学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据

9、有编号、姓名、职称和部门.要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类.(2)实验程序(参考)#includeclassperson(protected:intm;charA20;char*name;public:voidinput()(coutm;coutA;name=&A0;)voiddisplay()(cout编号:mendl;cout姓名:nameendl;);classstudent:publicperson(protected:intclassnum,mark;public:voidinput1(

10、)(cout输入一个学生数据:endl;input();coutclassnum;coutmark;)voiddisplay1()(cout显示一个学生的数据:endl;display();cout班号:classnumendl;cout成绩:markendl;);classteacher:publicperson(protected:charzhicheng20,bumen20;char*p;public:voidinput2()(cout显示一个老师的数据:endl;input();coutzhicheng;coutbumen;voiddisplay2()cout显示一个老师的数据:end

11、l;display();p=&zhicheng0;cout职称:pendl;p=&bumen0;cout部门:pendl;voidmain()studentS;teacherT;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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论