厦理实验四派生类和继承

更新时间:2023-11-01 00:24:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C++面向对象程序设计》实验报告

实验序号:03 实验项目名称:派生类与继承 学 号 实验地点 姓 名 指导教师 雷锋 专业 实验时间 一、实验目的及要求 (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<<\ //语句1 public: int y; }; int main() { Derived bb; //语句2 bb.setx(16); //语句3 bb.sety(25); //语句4 bb.show(); //语句5 cout<<\ //语句6 cout<<\ //语句7 cout<<\ //语句8 cout<<\ //语句9 return 0; } (1) 写出程序的运行结果。 【运行结果截图】: (2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。 1) 将基类Base中的数据成员x的访问权限改为private时,会出现哪些错误,为什么? 【运行结果分析】: 私有继承不能访问基类公有成员的对象。 2) 将基类Base中的数据成员x的访问权限改为protected时,会出现哪些错误,为什么? 【运行结果分析】: 私有继承不能访问基类保护成员的对象。 3) 在原程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? 【运行结果分析】: 公有继承时不能访问基类的私有成员的内部和对象,不能访问基类的保护成员的对象。 4) 在原程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? 【运行结果分析】: 保护继承时不能访问基类的私有成员的内部和对象,不能访问基类公有成员和保护成员的对象。 2、编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Persona,并作为学生类Student和教师类Teacher的基类。 【person类结构】:class Persona{ public: Persona(int numberl,string namel,string sexl,int agel) {number=numberl; name=namel; sex=sexl; age=agel; } void print() {cout<<\cout<<\cout<<\cout<<\} protected: int number; string name; string sex; int age; }; 【Student类结构】:class Student:private Persona{ public: Student(int numberl,string namel,string sexl,int agel,string gradel,float scorel) :Persona(numberl,namel,sexl,agel) { grade=gradel; score=scorel; } void print() {Persona::print(); cout<<\cout<<\} private: string grade; float score; }; 【Teacher类结构】:class Teacher:private Persona{ public: Teacher(int numberl,string namel,string sexl,int agel,string positionl,string departmentl) :Persona(numberl,namel,sexl,agel) { position=positionl; department=departmentl; } void print() {Persona::print(); cout<<\cout<<\} private: string position; string department; }; 【运行结果截图】: 3、按要求阅读、编辑、编译、调试和运行以下程序。 (1)阅读、编辑、编译、调试和运行以下程序,并写出程序运行结果。 #include #include using namespace std; class MyArray{ public: MyArray(int leng); ~MyArray(); void Input(); void Display(string); protected: int *alist; int length;

本文来源:https://www.bwwdw.com/article/5jf2.html

Top