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

下载本文档

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

文档简介

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

2、  MyArray();    void Input();    void Display();protected:long int *alist;   / 指向动态申请的一组空间int length;    / 整数的个数基类中有构造函数、析构函数、输入数据和输出数据的函数。定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。定义一个类AverArray继承自MyAr

3、ray ,在该类中定义函数Aver求解整数的平均值。定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。(2)实验程序 (参考)程序如下:#include "iostream.h"#include "process.h"class MyArraypublic:    MyArray(int leng);    MyArray()

4、;    void Input();    void Display();protected:    long int *alist;   / 指向动态申请的一组空间    int length;       / 整数的个数;MyArray:MyArray(int leng)   length=leng;    ali

5、st=new long intlength;    if(alist=NULL)             cout<<"对不起,创建失败。请重试。"exit(1);       MyArray:MyArray()  delete alist;    cout<<"数组被清空。"<<e

6、ndl; void MyArray:Display()  / 显示数组内容   int i;    long int *p=alist;    for (i=0;i<length;i+,p+)    cout<<" "<<*p;void MyArray:Input()     / 从键盘若干整数   cout<<"请输入:"<&l

7、t;length<<"个整数:"    int i;    long int *p=alist;    for(i=0;i<length;i+,p+)    cin>>*p;class SortArray: virtual public MyArray private:       int len;      

8、; long int *sp;public:   SortArray(int leng):MyArray(leng)       len=leng;          Sort();   ;   void Sort()      sp=new long intlen;      long int q;

9、0;     sp=alist;      for(int i=0;i<len;i+)         for(int j=0;j<len-1;j+)           if(*(sp+j)>*(sp+j+1)          

10、           q=*(sp+j);            *(sp+j)=*(sp+j+1);            *(sp+j+1)=q;             ; class ReArray:

11、virtual public MyArray   / 这里是虚基类,public:    void Reverse()         rp=new long intlen;      long int q;      rp=alist;      for(int i=0;i<len/2;i+)  &#

12、160;  q=*(rp+i);        *(rp+i)=*(rp+len-i-1);        *(rp+len-i-1)=q;               ReArray(int leng):MyArray(leng)        &

13、#160; len=leng;      Reverse();    private:      int len;      long int *rp;class AverArray:virtual public MyArray    /  这里是虚基类,public:   double Aver()     

14、0; ap=new long intlen;     double q=0;     ap=alist;     for(int i=0;i<len;i+)       q=q+*ap;ap+;          q=q/len;     return q;   AverArray(

15、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

16、(leng),ReArray(leng),AverArray(leng)  cout<<"n新数组正在创建。n"NewArray:NewArray()  cout<<"n新数组已被清空。n"void main()     char b;  int leng;   do        cout<<"请输入数组长度:"<<endl;  

17、;   cin>>leng;     while(leng<=0)     cout<<"数组长度必须为大于零的整数,请重新输入数组长度:n"exit(1);      cin>>leng;          cout<<"n开始:n"  

18、60;  NewArray n(leng);     n.Input();       cout<<"n您输入的数组为:"<<endl;     n.Display();       / 显示数组     n.Reverse();      /显示逆序  

19、    cout<<"n倒序数组为:"<<endl;     n.Display();        / 显示逆转以前的情况    cout<<"n平均值是:"<<n.Aver()<<endl;/求平均值     n.Sort();     

20、;    /排序     cout<<"n排序后(从小到大)数组为:"<<endl;     n.Display();       / 显示排序以后的情况                cout<<"nA继续  Q

21、退出"<<endl;     cin>>b;  while(b='A'|b='a');执行结果为: 2、编写一个学生和教师数据输入和显示程序。(1)实验内容编写学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类。(2)实验程序(参考)#include<iostream.h> cla

22、ss person  protected:   int m;   char A20;   char *name;  public:   void input()   cout<<"编号:"     cin>>m;     cout<<"姓名:" 

23、0;   cin>>A;                   name=&A0;        void display()      cout<<"编号:"<<m<<endl;   

24、   cout<<"姓名:"<<name<<endl; ;              class student:public person    protected:    int classnum, mark;public:    void input1()  

25、0; cout<<"输入一个学生数据:"<<endl;      input();      cout<<"班号:"    cin>>classnum;      cout<<"成绩:"       cin&g

26、t;>mark;     void display1()   cout<<"显示一个学生的数据:"<<endl;      display();    cout<<"班号:"<<classnum<<endl;    cout<<"成绩:"<<

27、;mark<<endl; ;class teacher: public person  protected:     char zhicheng20,bumen20;     char *p;  public:             void input2()     cout<<"显示一个老师的数据:"<<endl;  

28、;    input();      cout<<"职称:"      cin>>zhicheng;      cout<<"部门:"      cin>>bumen;           void display2()      cout<<"显示一个老师的数据:"<<endl;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论