《厦理实验四派生类和继承》由会员分享,可在线阅读,更多相关《厦理实验四派生类和继承(23页珍藏版)》请在金锄头文库上搜索。
1、C+面向对象程序设计实验报告实验序号:03 实验项目名称:派生类与继承学号 姓名 雷锋 专业实验地点 指导教师 实验时间一、实验目的及要求(1)掌握派生类的声明方法和派生类构造函数的定义方法;(2)掌握不同继承方式下,基类成员在派生类中的访问属性;(3)掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则;(4)学习虚函数在解决二义性问题中的作用。二、实验设备(环境)及要求Micorsoft Visual C+ 6.0三、实验内容与步骤(题目、算法和结果描述)1、输入下列程序。#includeusing namespace std;class Basepublic:void setx(in
2、t i) x=i;int getx() return x;public:int x;class Derived:public Basepublic:void sety(int i)y=i;int gety() return y;void show()cout#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display(string);protected:int *alist;int length;MyArray:MyArray(int leng) if(
3、leng*p;int main()MyArray a(5);a.Input();a.Display(显示已输入的 );return 0;(2)声明一个类 SortArray 继承类 MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。【提示】:请注意编写继承类的构造函数、析构函数,以及修改主函数。【SortArray 类框架】:class SortArray:public MyArraypublic:void Sort();SortArray(int leng):MyArray(leng)coutusing namespace std;class Basepublic
4、:void setx(int i) x=i;int getx() return x;public:int x;class Derived:public Basepublic:void sety(int i)y=i;int gety() return y;void show()cout#includeusing namespace std;class Personapublic:Persona(int numberl,string namel,string sexl,int agel)number=numberl;name=namel;sex=sexl;age=agel;void print()
5、cout#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display(string);protected:int *alist;int length;class SortArray:public MyArraypublic:void Sort();SortArray(int leng):MyArray(leng)cout*p;void SortArray:Sort()int temp,i,j;for(i=0;ialistj+1)temp=alistj;a
6、listj=alistj+1;alistj+1=temp;int main()SortArray s(5);s.Input();s.Display(显示排序前的);s.Sort();s.Display(显示排序以后的);return 0;3.2#include#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display(string);protected:int *alist;int length;class ReArray:public MyArray
7、public:void reverse();ReArray()cout*p;void ReArray:reverse()int i,temp;for(i=0;i#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display(string );protected:int *alist;int length;MyArray:MyArray(int leng) if(leng*p;class AverArray:public MyArraypublic:Aver
8、Array(int leng): MyArray(leng)cout#includeusing namespace std;class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display(string );protected:int *alist;int length;MyArray:MyArray(int leng) if(leng*p;class SortArray :virtual public MyArraypublic:void Sort();SortArray(int leng):MyArray(l
9、eng) coutalistj+1) temp=alistj;alistj=alistj+1;alistj+1=temp;class ReArray:virtual public MyArraypublic:void reverse();ReArray(int leng);virtual ReArray();ReArray:ReArray(int leng):MyArray(leng)if(leng=0)couterror length;exit(1);void ReArray:reverse()int i,temp;for(i=0;ilength-2;i+)temp=alisti;alist
10、i=alist4-i;alist4-i=temp;ReArray:ReArray()coutReArray 类对象被撤销。endl;class AverArray:virtual public MyArraypublic:AverArray(int leng): MyArray(leng)coutAyArray 类对象已创建。endl;AverArray()coutAverArray 类对象被撤销。endl;double Aver();double AverArray: Aver()double sum=0,average;int i;for( i=0;ilength;i+)sum+=alis
11、ti;average=sum/length;cout平均数是:averageendl;return 0;class NewArray:public SortArray ,public ReArray,public AverArray ,virtual public MyArraypublic:NewArray(int leng):SortArray(leng),ReArray(leng),AverArray(leng),MyArray(leng)coutNewArray 类对象已创建。endl;NewArray()coutNewArray 类对象被撤销。endl;int main()NewArray a(5);a.Input();a.Display(显示已输入的);a.Display(显示已输出的);a.Sort();a.Display(显示排序以后的);a.reverse();a.Display(显示倒序以后的);a.Aver();return 0;