湖北理工(黄石理工)C++实验 实验二派生类与继承.doc_第1页
湖北理工(黄石理工)C++实验 实验二派生类与继承.doc_第2页
湖北理工(黄石理工)C++实验 实验二派生类与继承.doc_第3页
湖北理工(黄石理工)C++实验 实验二派生类与继承.doc_第4页
湖北理工(黄石理工)C++实验 实验二派生类与继承.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

实验二 派生类与继承实验课程名:面向对象程序设计(C+)专业班级: 09计科(一)班 学号: * 姓名: * 实验时间: 11.8 实验地点: K4-102 指导教师: 祁文青 一、实验目的和要求(1) 掌握派生类的声明方法和派生类构造函数的定义方法。(2) 掌握不同继承方式下,基类成员在派生类中的访问属性。(3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。(4) 学习虚基类在解决二义性问题中的作用。二、实验内容1.输入下列程序。#includeusing namespace std;class Basepublic: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()endl;cout”Derived:y=”bb.gety()endl;return 0;(1) 写出程序的运行结果。答:(2)按以下要求,对程序进行修改后再调试,指出调试中出错的原因。将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么?答:出现的错误如下:原因是将基类Base中数据成员x的访问权限改为private后,X在公有派生类中的访问属性为不可被直接访问。 将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么?答:出现的错误如下:原因是将基类Base中数据成员x的访问权限改为protected后,x在类Derived中为保护成员,派生类对象不能访问它。在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么?答:出现的错误如下:原因是派生类Derived的继承方式改为private后,基类的数据成员和成员函数都成为类的私有成员,所以不能被派生类的对象访问。在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么?答:出现的错误如下:原因是将派生类Derived的继承方式改为protected后,派生类的对象不能访问基类的数据成员。(3)结果分析:通过本程序,了解了基类成员在派生类中的访问属性以及派生类在基类成员的访问属性的不同。不同的继承方式有不同的访问属性,派生类对基类成员的访问规则也有不同。所以不同继承方式的函数或变量的访问要记清楚。 2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。供参考的类结构如下:class Person.;class Student:public Person.;class Teacher:public Person.;解答:(1) 实验代码:#include iostream#include stringusing namespace std;class Personprivate:int no;string name;string sex;int age;public:void input () coutnonamesexage;void display()cout编号:noendl;cout姓名:nameendl;cout性别:sexendl;cout年龄:ageendl;class student:public Personprivate:string dept;int score;public:void get() input(); coutdeptscore; void show()display();cout系别:deptendl;cout成绩:scoreendl;class teacher:public Personprivate:string zc,bm;public:void get()input ();coutzcbm; void show()display();cout职称:zcendl;cout部门:bmendl;int main()student s;teacher t;s.get();s.show();t.get();t.show();return 0;(2) 程序运行结果:(3)结果分析:3. 按要求阅读、编辑、编译、调试和运行以下程序。(1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。#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)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个整数:;int i;int *p =alist;for(i=0;i*p;int main()MyArray a(5);a.Input();a.Display(显示已输入的);return 0;实验运行结果:(2) 声明一个类SortArray继承类MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。【提示】在第(1)步的基础上可增加下面的参考框架:class SortArray : public MyArray public:void Sort();SortArray(int leng):MyArray(leng)cout”SortArray类对象已创建。”endl;virtual SortArray();SortArray:SortArray()cout”SortArray类对象被撤销。”endl;void SortArray:Sort()/请自行编写Sort函数的代码,将输入的整数从小到大排序。/并将主函数修改为:int main()SortArray a(5);s.Input();s.Display(“显示排序以前的”);s.Sort();s.Display(“显示排序以后的”);return 0;声明一个类ReArray继承类MyArray,在该类中定义一个函数,具有将输入的整数进行倒置的功能。【提示】在第(1)步的基础上可增加下面的参考框架:Class ReArray:public MyArrayPublic:Void reverse();ReArray(int leng);Virtual ReArray();请读者自行编写构造函数、析构函数和倒置函数ReArray,以及修改主函数。(3) 声明一个类AverArray继承类MyArray,在该类中定义一个函数,具有求输入的整数平均值的功能。 【提示】 在第(1)步的基础上增加下面的参考框架:class AverArray:public MyArrayPublic:AverArray(int leng);AverArray();Double

温馨提示

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

评论

0/150

提交评论