28,刘小虎—++实验二.docVIP

  • 8
  • 0
  • 约1.16万字
  • 约 36页
  • 2017-05-15 发布于贵州
  • 举报
28,刘小虎—实验二

实验2 派生类与继承 实验课程名:高级语言程序设计Ⅱ 专业班级: 12网工2班 学号: 201240420228 姓名: 刘小虎 实验时间: 4.20-5.5 实验地点: K4-201 指导教师: 祁文青 一.实验目的和要求 (1) 掌握派生类的声明方法和派生类构造函数的定义方法。 (2) 掌握不同继承方式下,基类成员在派生类中的访问属性。 (3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。 (4) 学习虚基类在解决二义性问题中的作用。 2.2实验内容与步骤· 1.输入下列程序。 //test4_1.cpp #includeiostream 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=”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; } 写出程序的运行结果。 (2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。 ①将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么? ②将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么? ③在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? ④在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? 解答:1. 2.(1).这2条语句错误 cout”Base::x=”xendl; cout”Base::x=”bb.xendl; 将基类Base中数据成员x的访问权限改为private后,它在派生类中的访问属性变为不可访问的成员,因此在派生的Derived类中不能访问数据成员X,以及也不能在派外直接引用。 (2). 这条语句错误cout”Base::x=”bb.xendl; 将基类Base中数据成员x的访问权限改为protected后,经过公用继承,它在派生类中的访问属性任然为protected,所以在派外不能用对象引用。 (3)以下语句会出错: bb.setx(16); coutBase::x=bb.xendl; coutBase::x=bb.getx()endl; 将派生类Derived的继承方式改为private后,基类中的公有成员在派生类中访问属性都变为私有的,所以在派外不能用对象引用。 (4) 以下语句会出错: bb.setx(16); coutBase::x=bb.xendl; coutBase::x=bb.getx()endl; 将派生类Derived的继承方式改为protected后,基类中的公有成员在派生类中访问属性都变为保护的,所以在派外不能用对象引用。 2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。 供参考的类结构如下: class Person{ ... }; class Student:public Person{ ... }; class Teacher:public Person{ ... }; 解答:程序如下 #includeiostream #includestring using namespace std; class Person { public: void get_value() { cinnumnamesexage; } void display() { coutnum:numendl; coutname:nameendl; coutsex:sexendl;

文档评论(0)

1亿VIP精品文档

相关文档