2022年c++派生类与继承实验报告 .pdf
《2022年c++派生类与继承实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年c++派生类与继承实验报告 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 2 派生类与继承实验课程名:面向对象程序设计(C+ )专业班级:学号:姓名:实验时间:实验地点:指导教师:2.1 实验目的和要求(1) 掌握派生类的声明方法和派生类构造函数的定义方法。(2) 掌握不同继承方式下,基类成员在派生类中的访问属性。(3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。(4) 学习虚基类在解决二义性问题中的作用。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 28 页 - - - - - - - - - 二、实
2、验内容一、构造一个类Geometry及其派生类,该类主要实现关于几何图形的基本操作。对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数) ,求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。实验代码如下:#include using namespace std; class Geometry public: Circle radiums Circle() Circle() Ball Ball() Ball() Geometry Geometry() Ge
3、ometry() GetArea() GetPerimeter() Getcolume() show() Column Column() Column() Rectangle Rectangle() Rectangle() 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 28 页 - - - - - - - - - Geometry() Geometry() double GetArea()/求面积函数double GetPerimeter()/求体积函
4、数double Getcolume()/求周长函数virtual show() ; class Circle:public Geometry public: Circle(double i) radiums=i; Circle() double GetArea(); double Getcolume(); double R() return radiums; show(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 28 页 - - - - - -
5、 - - - private: double radiums; ; double Circle:GetArea() double S; S=3.14*radiums*radiums; return S; double Circle:Getcolume() double L; L=2*3.14*radiums; return L; Circle:show() cout圆的面积为: GetArea() 周长为:Getcolume()endl; class Rectangle:public Geometry 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整
6、理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 28 页 - - - - - - - - - public: Rectangle(double i,double j)length=i;wide=j; Rectangle() double GetArea(); double Getcolume(); double L() return length; show(); private: double length; double wide; ; double Rectangle:GetArea() double S; S=length*wide;
7、return S; double Rectangle:Getcolume() 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 28 页 - - - - - - - - - double L; L=2*(length+wide); return L; Rectangle:show() cout矩形的面积为: GetArea() 周长为:Getcolume()endl; class Ball:public Circle public: Ball(double
8、 i):Circle(i); Ball(); double GetArea(); double GetPerimeter(); show(); ; double Ball:GetArea() double S; S=4*3.14*R()*R(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 28 页 - - - - - - - - - return S; ; double Ball:GetPerimeter() double V; V=(4/3)*3
9、.14*R()*R()*R(); return V; Ball:show() cout球的体积为: GetPerimeter() 表面积为: GetArea()endl; class Column:public Circle,public Rectangle public: Column(double i,double j,double k):Circle(i),Rectangle(j,k); Column(); double GetArea(); double GetPerimeter(); show(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - -
10、-精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 28 页 - - - - - - - - - ; double Column:GetArea() return(2*3.14*R()*R()+2*3.14*R()*L(); double Column:GetPerimeter() return(3.14*R()*R()*L(); Column:show() cout圆柱的体积为: GetPerimeter() 表面积为: GetArea()endl; int main() Circle circle(2.5); circle.show()
11、; Rectangle rectangle(3,4); rectangle.show(); Ball ball(3.3); ball.show(); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 28 页 - - - - - - - - - Column column(1,2,3); column.show(); return 0; 运行结果:代码分析:1)首先定义基类Geometry, 在定义基类的派生类Circle,Rectangle 再定义以 C
12、ircle,Rectangle 为基类的派生类 Column ,以及以 Circle 为基类的派生类 Ball;2)在定义派生类时用构造函数初始化私有成员;3)最后用类的对象来调用类函数;二、设计如下类:(1)建立一个Point 类,表示平面中的一个点;建立一个Line 类,表示平面中的一条线端,内含两个Point 类的对象;建立Triangle 类,表示一个三角形,内含三个Line 类的对象构成一个三角形。(2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制(3)设计Triangle 类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。实验代码: #inc
13、lude #include using namespace std; class Point /定义一个点的类,坐标为(x,y) public: Point(double i,double j)x=i;y=j; double x,y; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 28 页 - - - - - - - - - ; class Line public: Line(double x1,double y1,double x2,double y
14、2):p1(x1,y1),p2(x2,y2); double length(); private: Point p1,p2; ; double Line:length() return(sqrt(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y); class Triangle public: Triangle(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5,double x6,double y6):
15、L1(x1,y1,x2,y2),L2(x3,y3,x4,y4),L3(x5,y5,x6,y6); int panduan(); double Area(); void show(); private: Line L1,L2,L3; ; int Triangle:panduan() double a=L1.length(); double b=L2.length(); double c=L3.length(); if(a+bc&b+ca&a+cb) return 1; else return 0; double Triangle:Area() double a=L1.length(); doub
16、le b=L2.length(); double c=L3.length(); double s=(a+b+c)/2; return(sqrt(s*(s-a)*(s-b)*(s-c); void Triangle:show() 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 28 页 - - - - - - - - - if(panduan() cout 三角形的面积为: Area()endl; else cout 不能构成三角形 endl; int
17、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) 三角形的面积用海伦公式求得,在三角形中定义一个判断函数,判断三边能否组成
18、三角形,当能组成三角形时则求面积并输出,当不能组成三角形时,输出不能构成三角形;三、 定义一个基类MyArray ,基类中可以存放一组整数,基类中有构造函数、析构函数、输入数据和输出数据的函数。class MyArray public: MyArray(int leng); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 28 页 - - - - - - - - - MyArray; void Input(); void Display(string)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年c+派生类与继承实验报告 2022 c+ 派生 继承 实验 报告
限制150内