《 面向对象程序设计 》实验报告四
说明:此部分应包含:实验内容、实验步骤、实验代码、实验结果及分析等。) 1. 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类 Teacher_Cadre(教师兼干部)类。 要求: (1) 在两个基类中都包含姓名、年龄、性别、地址、 电话等数据成员。 (2) 在Teacher类中还包含数据成员title(职称),在 Cadre类中还包含数据成员post(职务)。在 Teacher_Cadre类中还包含数据成员wages(工资)。 (3)对两个基类中的姓名、年龄、性别、地址、电 话等数据成员用相同的名字,在引用这些数据成员 时指定作用域。 (4)在类体中声明成员函数,在类外定义成员函数。 (5) 在派生类Teacher_Cadre的成员函数show中, 调用Teacher类中的display 函数, 输出姓名、年 龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。 实验过程: 定义头文件 teacher.h 包含teacher类的声明(包含姓名、年龄、性别、地址、 电话、职称等数据成员): 定义源文件 Teacher.cpp 包含 Teacher 类的成员函数的定义: 定义头文件 Cadre.h 包含 Cadre 类的声明: 定义源文件 Cadre.cpp 包含 Cadre 类的成员函数的定义: 最后,定义头文件 Teacher_Cadre.h 包含 Teacher_Cadre 类的声明: 定义源文件 Teacher_Cadre.cpp 包含 Teacher_Cadre 类的成员函数的定义: 最后,在主程序文件中,使用这些类: 过程分析: 对数据成员进行初始化时使用构造函数,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。所以,在设计派生类的构造函数时,不仅要考虑派生类所增加的数据成员的初始化,还应当考虑基类的数据成员初始化,所以,在执行派生类的构造函数时,要调用基类的构造函数。 编译结果: |
《 面向对象程序设计 》实验报告四
-
-
-
- 什么是友元函数?
-
-
2.声明基类Shape类,由它派生出3个派生类: Triangle(等腰三角形)、Square(矩形)和 Circle(圆 形)。应用C++的多态性,计算并显示等腰三角形、 矩形和圆形的面积。 实验过程: 首先,定义头文件 Shape.h 包含 Shape 类的声明: 其中,对纯虚函数printArea()进行了输出结果的初始化过程; 定义头文件 Triangle.h 包含 Triangle 类的声明: Triangle 类为Shape的子类,继承了Shape的基本成员函数;并又增加了私有成员高height和底width 定义源文件 Triangle.cpp 包含 Triangle 类的成员函数的定义: 其中定义了两个函数,分别对数据进行初始化和输出; 定义头文件 Rectangle.h 包含 Square 类的声明: 定义源文件 Rectangle.cpp 包含 Square 类的成员函数的定义: 最后,定义头文件 Circle.h 包含 Circle 类的声明: 定义源文件 Circle.cpp 包含 Circle 类的成员函数的定义: 最后,在主程序文件中,使用这些类: 这里定义了一个Shape型指针, Circle、rectangle、triangle的首地址分别存放在s中,指针指向其中的printArea()函数将其所求得的面积结果进行输出。 运行结果: 过程分析: 如果一个派生类有多个直接基类 而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。在引用这些同名的成员时,必须在派生类对象名后增加直接基类名, 以避免产生二义性,使其唯一的标识一个成员。 虚基类使得在继承间接基类时只保留一份成员。 |