c++派生类与继承实验报告材料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 派生类与继承
实验课程名:面向对象程序设计(C++)
专业班级:学号:姓名:
实验时间:实验地点:指导教师:
二、实验内容
一、构造一个类Geometry 及其派生类,该类主要实现关于几何图形的基本操作。对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。 试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。
实验代码如下:
#include
using namespace std;
class Geometry
{
public:
Geometry(){}
Circle
radiums
Circle()
~Circle() Ball
Ball()
~Ball() Geometry
Geometry()
~Geometry()
GetArea()
GetPerimeter()
Getcolume()
show()
Column Column()
~Column()
Rectangle Rectangle() ~Rectangle()
column.show();
return 0;
}
运行结果:
代码分析:
1)首先定义基类Geometry,在定义基类的派生类Circle,Rectangle
再定义以Circle,Rectangle为基类的派生类Column,以及以Circle为基类的派生类Ball;
2)在定义派生类时用构造函数初始化私有成员;
3)最后用类的对象来调用类函数;
二、设计如下类:
(1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。
(2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
(3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。
实验代码:#include
#include
using namespace std;
class Point //定义一个点的类,坐标为(x,y)
{
public:
Point(double i,double j){x=i;y=j;}
double x,y;
};
class Line
cout<<"三角形的面积为:"<
else
cout<<"不能构成三角形"< } int main() { Triangle T1(0,0,0,1,0,0,1,0,0,1,1,0); Triangle T2(1,0,0,0,0,0,0,2,0,0,0,1); T1.show(); T2.show(); return 0; } 实验结果: 实验分析: 1)在主函数中定义两个三角形的类,分别由三条边六个点组成,其中第一组能组成三角形,输出面积,第二组边不能组成三角形输出不能构成 三角形; 2)定义点类时,定义两个浮点型数据,用来表示点的坐标,定义边类时定义两个顶点,表示两个端点组成线段,定义三角形类时,用三边表示 三角形; 3)三角形的面积用海伦公式求得,在三角形中定义一个判断函数,判断三边能否组成三角形,当能组成三角形时则求面积并输出,当不能组成 三角形时,输出不能构成三角形; 三、定义一个基类MyArray,基类中可以存放一组整数,基类中有构造函数、析构函数、输入数据和输出数据的函数。 class MyArray{ public: MyArray(int leng); ~MyArray{}; void Input(); A.turn(); A.display(); return 0; } 实验结果: 结果分析: 定义一个基类,用指针作为数组名,定义一个数组,在定义各个基类,分别实现求平均值,排序,倒置的功能。 在调用成员时由于各个派生类都有基类的成员input,output,故用虚基类,避免出现二异性。 四、队列具有先进先出的特点,所有新来的元素都放在队列尾部,出队列的元素从队列 程序分析: 定义基类链表其中包含功能 能够在链表的头尾增加节点以及在链表尾增加节点 能够记录链表的个数(用静态成员) 能返回链表中的节点个数 能查看链表头节点的元素值 能告知链表是否为空 在链表类的构造函数中初始化链表 在链表类的析构函数中释放链表所有元素的空间 定义派生类队与栈,队列初始化用链表的初始化函数,用gettail实现入队操作用gethead 实现从队列的头部出对。栈中初始化用函数puthead实现从栈顶入栈,用函数gethead()实现从栈顶出栈。 三、结论 1)继承可以从基类中获得派生类中不曾定义过的成员,提高了编程效率;2)继承与派生分为共有、私有、保护三种继承方式,其中共有使用最广泛,