当前位置:首页 > 《C++程序设计》上机指导与补充习题
~D(){cout<<\};
int main() { D d(7,8,9); d.f(); d.display();
return 0; } (4)
#include
class Base2 { public: Base2() { cout<<\ } };
class Level1:public Base2,virtual public Base1 {
public: Level1() { cout<<\ } };
class Level2: public Base2,virtual public Base1 {
public: Level2() { cout<<\ } };
class TopLevel:public Level1,virtual public Level2 {
public: TopLevel() { cout<<\ } };
int main() { TopLevel obj; return 0; }
2.某出版系统发行图书和磁带,利用继承设计管理出版物的类。要求如下:建立一个基类Publication存储出版物的标题title、出版物名称name、单价price及出版日期date。用Book类和Tape类分别管理图书和磁带,它们都从Publication类派生。Book类具有保存图书页数的数据成员page,Tape类具有保存播放时间的数据成员playtime。每个类都有构造函数、析构函数,且都有用于从键盘获取数据的成员函数inputData(),用于显示数据的成员函数display()。
3.分别定义教师类Teacher和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话数据成员。
(2)在Teacher类中还包含数据成员职称title,在Cadre类中还包含数据成员职务post,在Teacher_Cadre类中还包含数据成员工资wage。
(3)对两个基类中的姓名、年龄、性别、地址、电话数据成员用相同的名字,在访问这类数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、地址、电话,然后再用cout语句输出职务和工资。 4.按下列要求编写程序。
(1)定义一个分数类Score。它有
3个数据成员:
Chinese //语文课成绩 English //英语课成绩 Mathematics //数学课成绩
2个构造函数:无参的和带参数的
3个成员函数:是否带参数根据需要自定 sum() //计算三门课总成绩
print() //输出三门课成绩和总成绩 modify() //修改三门课成绩 (2)定义一个学生类Student。它有
3个数据成员:
Num //学号
Name //姓名 MyScore //成绩
2个构造函数:无参的和带参数的
3个成员函数:是否带参数根据需要自定 sum() //计算某学生三门课总成绩 print() //输出某学生学号、姓名和成绩 modify() //修改某学生学号、姓名和成绩
(3)在主函数中,先定义一个学生类对象数组,再通过for循环给对象数组赋上实际值,最后输出对象数组个元素的值。
5.编写一个程序实现小型公司的人员信息管理系统。该公司雇员(employee)包括经理(manager),技术人员(technician)、销售员(salesman)和销售部经理(salesmanager)。要求存储这些人员的姓名、编号、级别、当月薪水,计算月薪并显示全部信息。
程序要对所有人员有提升级别的功能。为简单起见,所有人员的初始级别均为1,然后进行升级,经理升为4级,技术人员和销售部经理升为3级,销售员仍为1级。
月薪计算办法是:经理拿固定月薪8000元,技术人员按每小时100元领取月薪,销售员按该当月销售额4%提成,销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售额的5?。
实验五、多态性与虚函数(4学时) 一、实验目的
1.了解多态性的概念。
2.了解虚函数的作用及使用方法。
3.了解静态关联和动态关联的概念和用法。 4.了解纯虚函数和抽象类的概念和用法。
二、实验内容
1.阅读下面的程序,写出程序运行的结果。 #include
};
class Derive:public Base{ int j; public: Derive(int n1,int n2):Base(n1){ j=n2; } void g1(){cout<<\ void g3(){cout<<\};
int main(){ Derive Dobj(1,0); Base Bobj=Dobj; Bobj.g1(); cout<<\ Base *bp=&Dobj; bp->g1(); cout<<\ Base &bobj2=Dobj; bobj2.g1(); cout<<\ Dobj.g1(); return 0; }
2.先建立一个点类Point,包含数据成员x,y(坐标点)。以它为基类,派生出圆类Circle,增加数据成员radius(半径),再以Cirlcle类为直接基类,派生出圆柱体类Cylinder,再增加数据成员height(高)。要求:
(1)每个类都有构造函数、用于从键盘获取数据的成员函数set(),用于显示数据的成员函数display()。
(2)用虚函数输出各类对象信息。
3.先建立一个职工类Employee,包含数据成员name(职工姓名),ID(职工编号)。以它为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(代表经理的月工资),在技术人员类中增加数据成员wage(代表每小时的工资数)和hours(月工作时数)。在定义类时,所有类中必须包含有构造函数、析构函数、修改和获取所有数据成员的函数,以及纯函数计算职工的工资,输出职工的信息。
4.下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数。
实验六、面向对象的妥协(2学时) 一、实验目的
1.掌握友元的概念、友元函数的定义与使用方法。
2.掌握静态数据成员与静态成员函数的定义与使用方法。
共分享92篇相关文档