实验四 类的继承与多态实验
实验四类的继承与多态实验
实验四类的继承与多态实验
【实验目的】
1.理解软件重用性的一种形式――继承。2.能够通过继承已有的类创建新类。3.理解基类和派生类的概念。
4.能在派生类中采用构造函数和析构函数5.自学虚基类在化解二义性问题中的促进作用。
6.熟悉多态分类,理解静态联编和动态联编概念。7.掌握运算符重载方法。
8.认知虚函数、tcsh函数和抽象类概念。9.掌控用抽象类和多态性同时实现编程的方法。【实验内容】
1.分析程序,写出下列程序的运行结果:(1)#include
classba{
blanch private:intba_priv_dat;protected:intba_prot_dat;public:voidba_show();};
classderived:publicba{
private:intderived_priv_dat;public:voidderived_show();};
voidba::ba_show(){ba_priv_dat=1;//基类函数可以压低私有和维护型基类数据ba_prot_dat=2;cout<
voidderived::derived_show(){derived_priv_dat=3;ba_prot_dat=4;//派生函数可以处理保护型基类数据,但不能处理私有基类数据cout<
}
intmain(){derivedd_obj;d_obj.ba_show();//可用派生对象调用基类函数d_obj.derived_show();return(0);}
(2)#include
#includeclassperson{
public:person(constchar*s)//拎参数的构造函数{name=newchar[strlen(s)+1];strcpy(name,s);}~person(){delete[]name;}//析二重函数搞清扫工作char*getname(){returnname;}protected:char*name;};传颂的意思
classstudent:publicperson{char*major;public:student(constchar*s,constchar*m):person(s)//派生类构造函数{major=newchar[strlen(m)+1];strcpy(major,m);}~student(){delete[]major;}//派生类析构函数char*getmajor(){returnmajor;}};
intmain(){studentstu(\cout<圣诞节快乐英文怎么说
2.编译运行下列程序,分析出现编译错误的原因,并给出解决办法。
#includeclassba{pim
protected:inta;public:ba(){a=30;}};
exerci的用法 classb1:publicba{
public:b1(){cout<
classb2:publicba{
public:b2(){cout<
classderived:publicb2,publicb1{
dictatorial public:derived(){cout<
intmain(){derivedd;return(0);}
sultan kon 3.开发一个简单的大学人员管理程序,该程序可以管理大学的一些基本人员:学生(student)、教师(teacher)、教授(professor)。首先设计一个虚基类person。通过该类保存人员的最基本信息:姓名(name)、年龄(age)和性别(x)。然后使用该类派生出学生类student和教师类teacher,在其中添加各自的特性,如在student类中添加如下信息:专业(speciality),在teacher类中添加院系(department)等。还有部分教师
在工作的同时在职修读学位,因此同时具有教师和学生双重身份,所以由student类和teacher类再次派生出stuteacher类。为每个类定义一个输出函数print(),输出该类相关信息。
4.用运算符空载设计有理分数类,同时实现+、-、*、/等操作方式。提示信息:
创建一个有理分数类rational,有两个数据成员,一个构造函数,四个运算符重载函数,一个显示函数和一个约简函数。其中数据成员有分子numerator和分母denominator,构造函数可以避免分母为0,对不是约化型的分数进行约化。显示函数显示计算结果。约简函数对分数进行化简。
5.用运算符空载设计复数类,同时实现复数的+、-、*、/运算。
6.某学校对教师每月工资的计算规定如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元。副教授的固定工资为3000元,每个课时补贴30元。讲师的固定工资为2000元,每个课时补贴20元。定义教师抽象类,派生不同职称的教师类,编写程序求若干个教师的月工资。
shoal 备注:4、5Suippes一题。【思考题】
1.组合与继承的区别是什么?
2.公有承继、维护承继和私有承继分别在什么情况下采用?3.什么就是虚基类?有何促进作用?
个性情侣英文网名 4.静态联编和动态联编有什么区别?5.简述空的虚函数与纯虚函数的区别?6.简述抽象类和具体类的区别?holdon