完整版c派生类与继承实验报告

实验2派生类与继承实验课程名:面向对象程序设计(C++)专业班级:学号:姓名:实验时间:实验地点:指导教师:2.1实验目的和要求(1)掌握派生类的声明方法和派生类构造函数的定义方法。(2)掌握不同继承方式下,基类成员在派生类中的访问属性。(3)掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。(4)学习虚基类在解决二义性问题中的作用。二、实验内容一、构造一个类Geometry及其派生类,该类主要实现关于几何图形的基本操作。对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。GeometryGeometry()~Geometry()GetArea()GetPerimeter()Getcolume()show()CircleRectangleradiumsRectangle()Circle()~Rectangle()~Circle()BallColumnBall()Column()~Ball()~Column()实验代码如下:#include<iostream>usingnamespacestd;classGeometry{public:Geometry(){}~Geometry(){}doubleGetArea(){}//求面积函数doubleGetPerimeter(){}//求体积函数doubleGetcolume(){}//求周长函数virtualshow(){}};classCircle:publicGeometry{public:Circle(doublei){radiums=i;}~Circle(){}doubleGetArea();doubleGetcolume();doubleR(){returnradiums;}show();private:doubleradiums;};doubleCircle::GetArea(){doubleS;S=3.14*radiums*radiums;returnS;}doubleCircle::Getcolume(){doubleL;L=2*3.14*radiums;returnL;}Circle::show(){周长为:潣瑵?<<GetArea()<<'??圆的面积为:<<Getcolume()<<endl;}classRectangle:publicGeometry{public:Rectangle(doublei,doublej){length=i;wide=j;}~Rectangle(){}doubleGetArea();doubleGetcolume();doubleL(){returnlength;}show();private:doublelength;doublewide;};doubleRectangle::GetArea(){doubleS;S=length*wide;returnS;}doubleRectangle::Getcolume(){doubleL;L=2*(length+wide);returnL;}Rectangle::show(){潣瑵?矩形的面积为:??瑥牁慥?????尼周长为:<<Getcolume()<<endl;}classBall:publicCircle{public:Ball(doublei):Circle(i){};~Ball(){};doubleGetArea();doubleGetPerimeter();show();};doubleBall::GetArea(){doubleS;S=4*3.14*R()*R();returnS;};doubleBall::GetPerimeter(){doubleV;V=(4/3)*3.14*R()*R()*R();returnV;}Ball::show(){表面球的体积为:潣瑵???瑥敐楲敭整??????积为:<<GetArea()<<endl;}classColumn:publicCircle,publicRectangle{public:Column(doublei,doublej,doublek):Circle(i),Rectangle(j,k){};~Column(){};doubleGetArea();doubleGetPerimeter();show();};doubleColumn::GetArea(){return(2*3.14*R()*R()+2*3.14*R()*L());}doubleColumn::GetPerimeter(){return(3.14*R()*R()*L());}Column::show(){表圆柱的体积为:潣瑵???瑥敐楲敭整??????面积为:<<GetArea()<<endl;}intmain(){Circlecircle(2.5);circle.show();Rectanglerectangle(3,4);rectangle.show();Ballball(3.3);ball.show();Columncolumn(1,2,3);column.show();return0;}运行结果:代码分析:1)首先定义基类Geometry,在定义基类的派生类Circle,Rectangle再定义以Circle,Rectangle为基类的派生类Column,以及以Circle为基类的派生类Ball;2)在定义派生类时用构造函数初始化私有成员;3)最后用类的对象来调用类函数;二、设计如下类:(1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。(2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制(3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。实验代码:#include<iostream>#include<math.h>usingnamespacestd;classPoint//定义一个点的类,坐标为(x,y){public:Point(doublei,doublej)...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?