ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:189.72KB ,
资源ID:10885189      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10885189.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(派生类与继承实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

派生类与继承实验报告.docx

1、派生类与继承实验报告洛阳理工学院实验报告系别计算机与信息工程系班级B11050学号B11050姓名课程名称C+面向对象与程序设计实验日期2013.10.8实验名称派生类与继承成绩实验目的:1、 掌握派生类的声明方法和派生类构造函数的定义方法;2、 掌握不同继承方式下,基类成员在派生类中的访问属性;3、 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则;4、 学习虚基类在解决二义性问题中的作用。实验条件:装有Microsoft Visual C+6.0软件的计算机实验内容:1.输入下列程序。/test4_1.cpp#includeusing namespace std;class Bas

2、epublic: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”Base:x=”xendl;public:inty;int main()Derived bb;bb,setx(16);bb.sety(25);bb.show();cout”Base:x=”bb.xendl;cout”Derived:y=”bb.yendl;cout”Base:x=”bb.getx()end

3、l;cout”Derived:y=”bb.gety()endl;return 0;写出程序的运行结果。(2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么?将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么?在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么?在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么?解答如下;将基类Base中数据成员x的访问权限改为private时,

4、会出现哪些错误?为什么?因为基类Base中数据成员x的访问权限改为private时,基类的私有成员在派生类中并没有成为派生类的私有成员,使得再通过派生类的对象调用x时,不能被系统所识别,出现了错误。将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么?因为基类Base中数据成员x的访问权限改为protected时,公用基类的保护成员在公用派生类中的访问属性仍然是保护,在公用派生类外就不能通过公用派生类的对象访问该成员,所以出现了错误。在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? 将派生类Derived的继承方式

5、改为private时,私有基类中的公用成员在私有派生类中的访问属性为私有,在类外不能通过对象调用私有成员,只能通过成员函数调用.在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么?因为私有继承时基类中的公有函数到派生类中一是私有成员,不能通过对象访问,只能通过成员函数来访问。2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。供参考的类结构如下

6、:class Person.;class Student:public Person.;class Teacher:public Person.;程序代码:#include#includeusing namespace std; class Person public: Person(int n,string nam,char s,int a) num=n; name=nam; sex=s; age=a; Person() protected: int num; string name; char sex; int age; ; class Student:public Person publ

7、ic: Student(int n,string nam,char s,int a,string ap,int sc):Person( n,nam, s, a) apart=ap; score=sc; void show1() coutnum:numendl; coutname:nameendl; coutsex:sexendl; coutage:ageendl; coutapart:apartendl; coutscore:scoreendlendl; Student() private: string apart; int score; ;class Teacher:public Pers

8、on public: Teacher(int n,string nam,char s,int a,string z,string t):Person( n, nam, s, a) zhi=z title=t; void show2() coutnum:numendl; coutname:nameendl; coutsex:sexendl; coutage:ageendl; coutzhi:zhiendl; couttitle:titleendl; Teacher() private: string zhi; string title; ; int main() Student S(1001,y

9、ang-heng,f,21,computer,98); Teacher T(2009,li-sheng,f,35,manager,education); S.show1(); T.show2(); return 0; 程序运行结果:(3)调试程序时会出现以下错误:调用函数是应注意其访问权限,基类函数的私有成员只能被其成员函数访问,不能被派生类的对象和成员函数所访问,还要注意调用派生类的构造函数时的参数列表表达形式。(4)结果分析:注意构造函数和派生类调用基类的构造函数赋值,在后面对新增的参数初始化,通过对象赋值后再对其输出。 3.按要求阅读、编辑、编译、调试和运行以下程序。(1) 阅读、编辑、

10、编译、调试和运行以下程序,并写出程序的运行结果。 /test4_3_1.cpp#include#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=0)couterror length;exit(1);alist=new int leng;length=leng;if(alist=NULL)coutass

11、ign failure;exit(1);coutMyArray类对象已创建。endl;MyArray:MyArray()delete alist;coutMyArray类对象被撤销。endl;void MyArray:Display(string str)int i;int *p=alist;coutstrlength个整数:;for(i=0;ilength;i+,p+)cout*p;coutendl;void MyArray:Input()cout请键盘输入length个整数:;int i;int *p =alist;for(i=0;i*p;int main()MyArray a(5);a.

12、Input();a.Display(显示已输入的);return 0; (2) 声明一个类SortArray继承类MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。程序代码:#include#includeusing namespace std;class MyArray public: MyArray(int leng); MyArray(); void Input(); void Display(string );protected: int *alist; int length; ;class SortArray : public MyArray public

13、:void Sort();SortArray(int leng):MyArray(leng)coutSortArray类对象已创建。endl;virtual SortArray();SortArray:SortArray()coutSortArray类对象被撤销。endl;MyArray:MyArray(int leng) if(leng=0) couterror length; exit(1); alist=new int leng;length=leng;if(alist=NULL) coutassign failure;exit(1); coutMyArray类对象已创建。endl;My

14、Array:MyArray() delete alist;coutMyArray类对象被撤销。endl;void MyArray:Display(string str)int i;int *p=alist;coutstrlength个整数:;for(i=0;ilength;i+,p+)cout*p ;coutendl;void MyArray:Input()cout请键盘输入length个整数:;int i;int *p =alist;for(i=0;i*p;void SortArray:Sort() int temp,i,j; for(i=0;ilength-1;i+)for(j=0;jal

15、istj+1) temp=alistj; alistj=alistj+1; alistj+1=temp; int main()SortArray s(5);s.Input();s.Display(显示排序以前的);s.Sort();s.Display(显示排序以后的);return 0;程序运行结果:(2).声明一个类ReArray继承类MyArray,在该类中定义一个函数,具有将输入的整数进行倒置的功能。 程序代码:#include #include using namespace std; class MyArray public: MyArray(int leng); MyArray()

16、; void Input(); void Display(string); protected: int *alist; int length; ; class ReArray:public MyArray public: void reverse(); ReArray() coutReArray类对象被撤销。endl; ; ReArray(int leng):MyArray(leng) coutReArray类对象已创建。endl; ; MyArray:MyArray(int leng) if(leng=0) couterror length; exit(1); alist=new int

17、leng; length=leng; if(alist=NULL) coutassign failure; exit(1); coutMyArray类对象已创建。endl; MyArray:MyArray() delete alist; coutMyArray类对象被撤销。endl; void MyArray:Display(string str) int i; int *p=alist; coutstrlength个整数:; for(i=0;ilength;i+,p+) cout*p ; coutendl; void MyArray:Input() cout请键盘输入length个整数:;

18、int i; int *p =alist; for(i=0;i*p; void ReArray:reverse() int i,temp; for(i=0;ilength-2;i+) temp=alisti; alisti=alist4-i; alist4-i=temp; int main() ReArray a(5); a.Input();a.Display(显示已输入的);a.reverse();a.Display(显示已输出的);return 0;程序运行结果:(3) 声明一个类AverArray继承类MyArray,在该类中定义一个函数,具有求输入的整数平均值的功能。 程序代码:#in

19、clude#includeusing namespace std;class MyArray public: MyArray(int leng); MyArray(); void Input(); void Display(string );protected: int *alist; int length; ;MyArray:MyArray(int leng) if(leng=0) couterror length; exit(1); alist=new int leng;length=leng;if(alist=NULL) coutassign failure;exit(1); coutM

20、yArray类对象已创建。endl;MyArray:MyArray() delete alist;coutMyArray类对象被撤销。endl;void MyArray:Display(string str)int i;int *p=alist;coutstrlength个整数:;for(i=0;ilength;i+,p+)cout*p ;coutendl;void MyArray:Input()cout请键盘输入length个整数:;int i;int *p =alist;for(i=0;i*p;class AverArray:public MyArraypublic:AverArray(i

21、nt leng): MyArray(leng)coutMyArray类对象已创建。endl;AverArray()coutAverArray类对象被撤销。endl;double Aver();double AverArray: Aver()double sum=0,average;int i;for( i=0;ilength;i+)sum+=alisti;average=sum/length;cout平均数是:averageendl;return 0;int main()AverArray a(5);a.Input();a.Display(显示已输入的);a.Aver();return 0;程

22、序运行结果:(2)程序代码:#include#includeusing namespace std;class MyArray public: MyArray(int leng); MyArray(); void Input(); void Display(string );protected: int *alist; int length; ;MyArray:MyArray(int leng) if(leng=0) couterror length; exit(1); alist=new int leng;length=leng;if(alist=NULL) coutassign failu

23、re;exit(1); coutMyArray类对象已创建。endl;MyArray:MyArray() delete alist; coutMyArray类对象被撤销。endl;void MyArray:Display(string str) int i; int *p=alist; coutstrlength个整数:; for(i=0;ilength;i+,p+) cout*p ; coutendl; void MyArray:Input() cout请键盘输入length个整数:; int i; int *p =alist; for(i=0;i*p; class SortArray :v

24、irtual public MyArray public: void Sort(); SortArray(int leng):MyArray(leng) coutSortArray类对象已创建。endl; virtual SortArray();SortArray:SortArray()coutSortArray类对象被撤销。endl;void SortArray:Sort() int temp,i,j; for(i=0;ilength-1;i+) for(j=0;jalistj+1) temp=alistj; alistj=alistj+1; alistj+1=temp; class ReA

25、rray:virtual public MyArray public: 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; alisti=alist4-i; alist4-i=temp; ReArray:ReArray() coutReArray类对象被撤销。endl; class AverArray:virtual public MyArraypublic:AverArray(int leng): MyArray(leng)coutAyArray类对象已创建。endl;AverArray()coutAverArray类对象被撤销。endl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1