实验3---副本_第1页
实验3---副本_第2页
实验3---副本_第3页
实验3---副本_第4页
实验3---副本_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C C 面向对象程序设计面向对象程序设计 实验报告实验报告 实验序号 3 实验项目名称 派生类与继承 学 号姓 名专业 实验地点指导教师实验时间 一 实验目的及要求 1 掌握派生类的声明方法和派生类构造函数的定义方法 2 掌握不同继承方式下 基类成员在派生类中的访问属性 3 掌握在继承方式下 构造函数与析构函数的执行顺序与构造规则 4 学习虚函数在解决二义性问题中的作用 二 实验设备 环境 及要求 Micorsoft Visual C 6 0 三 实验内容与步骤 题目 算法和结果描述 1 输入下列程序 include using namespace std class Base public void setx int i x i int getx return x public int x class Derived public Base public void sety int i y i int gety return y void show cout Base x x endl 语句 1 public int y int main Derived bb 语句 2 bb setx 16 语句 3 bb sety 25 语句 4 bb show 语句 5 cout Base x bb x endl 语句 6 cout Derived y bb y endl 语句 7 cout Base x bb getx endl 语句 8 cout Derived y bb gety endl 语句 9 return 0 1 写出程序的运行结果 运行结果截图 2 按以下要求 对程序进行修改后再调试 指出调试中出错的原因 1 将基类 Base 中的数据成员 x 的访问权限改为 private 时 会出现哪些错误 为什 么 运行结果分析 派生类函数不能直接访问基类中的私有成员 2 将基类 Base 中的数据成员 x 的访问权限改为 protected 时 会出现哪些错误 为 什么 运行结果分析 基类的 protected 成员在派生类内部的其他成员可以直接访问它们 但 是在类外部通过派生类的对象无法访问 3 在原程序的基础上 将派生类 Derived 的继承方式改为 private 时 会出现哪些错 误 为什么 运行结果分析 基类中的成员通过 private 方式继承 在派生类中都为私有成员 派 生类的其他成员可以直接访问它们 类外的对象都不能直接访问 4 在原程序的基础上 将派生类 Derived 的继承方式改为 protected 时 会出现哪些 错误 为什么 运行结果分析 基类的 public 成员和 protected 成员通过 protected 继承到派生类中都 作为派生类的 protected 成员 派生类的其他成员可以直接访问它们 但是类的外部使用者 不能通过派生类的对象来访问它们 2 编写一个学生和教师的数据输入和显示程序 学生数据有编号 姓名 性别 年龄 系别和成绩 教师数据有编号 姓名 性别 年龄 职称和部门 要求将编号 姓名 性 别 年龄的输入和显示设计成一个类 Persona 并作为学生类 Student 和教师类 Teacher 的 基类 person 类结构 class Person public void input cout number cout name cout sex cout age void print cout Num number endl cout Name name endl cout Sex sex endl cout Age age endl protected int number age string name sex Student 类结构 class Student public Person public void input1 cout Please enter the student s information endl Person input cout department cout score void print1 cout The student s endl Person print cout Institute department endl cout Score score endl private string department float score Teacher 类结构 class Teacher public Person public void input2 cout Please enter the teacher s information endl Person input cout title cout section void print2 cout The teacher s endl Person print cout Title title endl cout Department section endl private string title section 运行结果截图 3 按要求阅读 编辑 编译 调试和运行以下程序 1 阅读 编辑 编译 调试和运行以下程序 并写出程序运行结果 include include using 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 cout error length exit 1 alist new int leng length leng if alist NULL cout assign failure exit 1 cout MyArray 类对象已创建 endl MyArray MyArray delete alist cout MyArray 类对象被撤销 endl void MyArray Display string str int i int p alist cout str length 个整数 for i 0 i length i p cout p cout endl 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 在该类中定义一个函数 具有将输入的整 数从小到大进行排序的功能 提示 请注意编写继承类的构造函数 析构函数 以及修改主函数 SortArray 类框架 class SortArray public MyArray public void Sort SortArray int leng MyArray leng len leng cout SortArray 类对象已创建 endl virtual SortArray private int len int sp SortArray SortArray cout SortArray 类对象被撤销 endl void SortArray Sort int q sp alist for int i 0 i len i for int j 0 j sp j 1 q sp j sp j sp j 1 sp j 1 q 运行结果截图 3 声明一个类 ReArray 继承类 MyArray 在该类中定义一个函数 即有将输入的整数 进行倒置的功能 提示 请注意编写继承类的构造函数 析构函数 以及修改主函数 ReArray 类框架 class ReArray public MyArray public void Reverse ReArray int leng MyArray leng len leng void Reverse cout ReArray 类对象已创建 endl virtual ReArray private int len int bp ReArray ReArray cout ReArray 类对象被撤销 endl void ReArray Reverse int q bp alist for int i 0 i len 2 i q bp i bp i bp len i 1 bp len i 1 q 运行结果截图 4 声明一个类 Average 继承类 MyArray 在该类中定义一个函数 即有将输入的整数 进行平均的功能 提示 请注意编写基继承类的构造函数 析构函数 以及修改主函数 Average 类框架 class Average public MyArray public void Aver Average int leng MyArray leng len leng cout Average 类对象已创建 endl virtual Average private int len int cp Average Average cout Average 类对象被撤销 endl void Average Aver double q 0 cp alist for int i 0 i len i q q cp cp q q len cout The average of the q endl 运行结果截图 5 声明一个 NewArray 类 同时继承了类 SortArray ReArray 和 Average 使得类 NewArray 的对象同时具有排序 倒置和求平均值的功能 在继承的过程中声明 MyArray 为虚基类 体会虚基类在解决二义性问题中的作用 NewArray 类框架 class NewArray public ReArray public SortArray public Average public NewArray int leng NewArray NewArray NewArray int leng MyArray leng SortArray leng ReArray leng Average leng cout n 新数组正在创建 n NewArray NewArray cout n 新数组已被清空 n 运行结果截图 四 分析与讨论 记录实验过程中出现的主要问题和心得体会 1 查阅课本 2 参考例题 3 看 PPT 回忆老师讲课内容 4 不懂的还可以问同学 老师 5 上课认真听 五 教师评语 签名 日期 成绩 附 程序源代码附 程序源代码 1 include using namespace std class Base public void setx int i x i int getx return x public int x class Derived public Base public void sety int i y i int gety return y void show cout Base x x endl 语句 1 public int y int main Derived bb 语句 2 bb setx 16 语句 3 bb sety 25 语句 4 bb show 语句 5 cout Base x bb x endl 语句 6 cout Derived y bb y endl 语句 7 cout Base x bb getx endl 语句 8 cout Derived y bb gety endl 语句 9 return 0 2 include include using namespace std class Person public void input cout number cout name cout sex cout age void print cout Num number endl cout Name name endl cout Sex sex endl cout Age age endl protected int number age string name sex class Student public Person public void input1 cout Please enter the student s information endl Person input cout department cout score void print1 cout The student s endl Person print cout Institute department endl cout Score score endl private string department float score class Teacher public Person public void input2 cout Please enter the teacher s information endl Person input cout title cout section void print2 cout The teacher s endl Person print cout Title title endl cout Department section endl private string title section int main Student stu stu input1 cout endl Teacher tea tea input2 stu print1 cout endl tea print2 return 0 3 2 include include using 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 cout error length exit 1 alist new int leng length leng if alist NULL cout assign failure exit 1 cout MyArray 类对象已创建 endl MyArray MyArray delete alist cout MyArray 类对象被撤销 endl void MyArray Display string str int i int p alist cout str length numbers are for i 0 i length i p cout p cout endl void MyArray Input cout Please input length numbers endl int i int p alist for i 0 i p class SortArray public MyArray public void Sort SortArray int leng MyArray leng len leng cout SortArray 类对象已创建 endl virtual SortArray private int len int sp SortArray SortArray cout SortArray 类对象被撤销 endl void SortArray Sort int q sp alist for int i 0 i len i for int j 0 j sp j 1 q sp j sp j sp j 1 sp j 1 q int main SortArray a 5 a Input a Display These a Sort a Display After sorted return 0 3 3 include include using 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 cout error length exit 1 alist new int leng length leng if alist NULL cout assign failure exit 1 cout MyArray 类对象已创建 endl MyArray MyArray delete alist cout MyArray 类对象被撤销 endl void MyArray Display string str int i int p alist cout str length numbers are for i 0 i length i p cout p cout endl void MyArray Input cout Please input length numbers endl int i int p alist for i 0 i p class ReArray public MyArray public void Reverse ReArray int leng MyArray leng len leng void Reverse cout ReArray 类对象已创建 endl virtual ReArray private int len int bp ReArray ReArray cout ReArray 类对象被撤销 endl void ReArray Reverse int q bp alist for int i 0 i len 2 i q bp i bp i bp len i 1 bp len i 1 q int main ReArray a 5 a Input a Display These a Reverse a Display After Inversion the return 0 3 4 include include using 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 cout error length exit 1 alist new int leng length leng if alist NULL cout assign failure exit 1 cout MyArray 类对象已创建 endl MyArray MyArray delete alist cout MyArray 类对象被撤销 endl void MyArray Display string str int i int p alist cout str length numbers are for i 0 i length i p cout p cout endl void MyArray Input cout Please input length numbers int i int p alist for i 0 i p class Average public MyArray public void Aver Average int leng MyArray leng len leng cout Average 类对象已创建 endl virtual Average private int len int cp Average Average cout Average 类对象被撤销 endl void Average Aver double q 0 cp alist for int i 0 i len i q q cp cp q q len cout The average of the q endl int main Average a 5 a Input a Display These a Aver return 0 3 5 include include using 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 cout error length exit 1 alist new int leng length leng if alist NULL cout assign failure exit 1 cout MyArray 类对象已创建 endl MyArray MyArray delete alist cout MyArray 类对象被撤销 endl void MyArray Display string str int i int p alist cout str length numbers are for i 0 i length i p cout p cout endl void MyArray Input cout Please input length numbers endl int i int p alist for i 0 i p class SortArray virtual public MyArray public void Sort SortArray int leng MyArray leng len leng cout SortArray 类对象已创建 endl virtual SortArray private int len int sp SortArray SortArray cout SortArray 类对象被撤销 endl void SortArray Sort int q sp alist for int i 0 i

温馨提示

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

评论

0/150

提交评论