天天看点

《C++语言基础》实践项目——多重继承

【项目1 - 教师兼干部类】

分别定义teacher(教师)类和cadre(干部)类,采用多重继承方式由这两个类派生出新类teacher_cadre(教师兼干部)。要求: 

(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 

(2)在teacher类中还包含数据成员title(职称),在cadre类中还包含数据成员post(职务),在teacher_cadre类中还包含数据成员wages(工资)。 

(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。 

(4)在类体中声明成员函数,在类外定义成员函数。 

(5)在派生类teacher_cadre的成员函数show中调用teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

【项目2 - 摩托车继承自行车和机动车】

在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示。

《C++语言基础》实践项目——多重继承

(1)根据上面各类间关系的描述,补全下面程序段中空缺的代码;

(2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示。

(4)在报告中,请用自己的话写清楚使用虚基类解决什么问题?

参考运行结果如下:

【项目3】日期时间类

定义一个日期类date,数据成员包括年、月、日,setdate(int y,int m,int d)和printdate()函数分别用于设置日期和显示日期;再定义一个时间类time,数据成员包括时、分、秒,settime(int h,int m,int s)和printtime()函数分别用于设置时间和显示时间,在此基础上再定义一个日期时间类timedate,充分利用已有的两个类中提供的方法,实现日期和时间的设置和显示。请实现类timedate,下面是用于测试的主函数及参考运行结果。

《C++语言基础》实践项目——多重继承

【项目4 - 点、圆的关系】

(1)先建立一个point(点)类,包含数据成员x,y(坐标点);

(2)以point为基类,派生出一个circle(圆)类,增加数据成员(半径),基类的成员表示圆心;

(3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);

(4)定义友元函数int locate,判断点p与圆的位置关系(返回值<0圆内,==0圆上,>0 圆外);

(5)在圆类上重载关系运算符(6种),使之能够按圆的面积比较两个圆的大小。自编main函数完成测试。

(6)与圆心相连的直线:给定一点p,其与圆心相连成的直线,会和圆有两个交点,如图。在上面定义的point(点)类和circle(圆)类基础上,设计一种方案,输出这两点的坐标。

提示:

《C++语言基础》实践项目——多重继承

继续阅读