西安交大c程序设计第十章作业

上传人:s9****2 文档编号:557508277 上传时间:2023-03-26 格式:DOC 页数:43 大小:613.50KB
返回 下载 相关 举报
西安交大c程序设计第十章作业_第1页
第1页 / 共43页
西安交大c程序设计第十章作业_第2页
第2页 / 共43页
西安交大c程序设计第十章作业_第3页
第3页 / 共43页
西安交大c程序设计第十章作业_第4页
第4页 / 共43页
西安交大c程序设计第十章作业_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《西安交大c程序设计第十章作业》由会员分享,可在线阅读,更多相关《西安交大c程序设计第十章作业(43页珍藏版)》请在金锄头文库上搜索。

1、西安交通大学实验报告课程_计算机程序设计_实验名称_多态性_第 1 页 共 44 页系 别_ _ 实 验 日 期 2014 年 5 月 31 日专业班级_ _组别_ 实 验 报 告 日 期 2014 年 5 月 31 日姓 名_ _学号_ _ 报 告 退 发 ( 订正 、 重做 )同 组 人_ 教 师 审 批 签 字 一、实验目的理解掌握多态的使用方法,学会用虚函数。二、实验内容 (一)第一题:定义一个类Base,该类含有虚函数display,然后定义它的两个派生类FirstB和SecondB,这两个派生类均含有公有成员函数display,在主程序中,定义指向基类Base的指针变量ptr,并分

2、别定义Base、FirstB、Second的对象b1、f1、s1,让ptr分别指向b1、f1、s1的起始地址,然后指向执行这些对象的成员函数display。1.源程序代码:#includeusing namespace std;class Base public:virtual void display()coutsound!sound!sound!;class FirstB:public Basepublic:void virtual display()coutmiao!miao!miao!;class SecondB:public Basepublic:void virtual displ

3、ay()coutwang!wang!wang!;int main()Base *ptr;Base b1;FirstB f1;SecondB s1;coutdisplay();coutdisplay();coutdisplay();coutendl;return 0; 2.实验结果:(二)第二题: 扩充例10-5,从中派生一个正方形类和圆柱体类,写一个测试程序,输出正方形的面积和圆柱体的体积。1.源程序代码: /shape类shape.h文件#ifndef SHAPE_H#define SHAPE_H#includeusing namespace std;class Shapepublic:vi

4、rtual double Area()constreturn 0.0;/纯虚函数,在派生类中重载virtual double Volume() const=0;virtual void PrintShapeName() const=0;virtual void Print() const=0;#endif/point.h点类#ifndef POINT_H#define POINT_H#include#includeshape.husing namespace std;class Point:public Shapeint x,y;public:Point(int a=0,int b=0)Set

5、Point(a,b);void SetPoint(int a,int b)x=a;y=b;int GetX()return x;int GetY()return y;virtual double Volume() constreturn 0.0;virtual void PrintShapeName()constcoutPoint:;virtual void Print()constcoutx,y;#endif/circle.h圆类#ifndef CIRCLE_H#define CIRCLE_H#include#includepoint.husing namespace std;class C

6、ircle:public Pointdouble radius;public:Circle(int x=0,int y=0,double r=0.0):Point(x,y)SetRadius(r);void SetRadius(double r)radius=(r=0?r:0);double GetRadius() constreturn radius;virtual double Area() constreturn 3.14159*radius*radius;virtual double Volume() constreturn 0.0;virtual void PrintShapeNam

7、e() constcoutCircle:;void Print() constcoutCenter=;Point:Print();cout;Radius=radiusendl;#endif/rectangle.h矩形类#ifndef RECTANGULAR_H#define RECTANGULAR_H#include#includepoint.husing namespace std;class Rectangle:public Pointdouble length,width;public:Rectangle(int x=0,int y=0,double l=0.0,double w=0.0

8、):Point(x,y)SetLength(l);SetWidth(w);void SetLength(double l)length=(l=0?l:0);void SetWidth(double w)width=(w=0?w:0);double GetLength() constreturn length;double GetWidth() constreturn width;virtual double Area() constreturn length*width;virtual double Volume() constreturn 0.0;virtual void Print() c

9、onstcoutLeft Top Vertex=;Point:Print();cout;Length=length,Width=widthendl;virtual void PrintShapeName() constcoutRectangle:;#endif/cylinder.h圆柱体类#ifndef CYLINDER_H#define CYLINDER_H#includecircle.h#include;using namespace std;class Cylinder:public Circledouble height;public:Cylinder(int x=0,int y=0,

10、double r=0,double h=0):Circle(x,y,r)SetHeight(h);void SetHeight(double h)height=(h=0?h:0);double GetHeight() constreturn height;double Volume() constreturn Area()*height;virtual void PrintShapeName() constcoutCylinder:;void Print() constCircle:Print();coutHeight=heightendl;#endif/square.h正方形类,几乎跟矩形类

11、一样而已#ifndef SQUARE_H#define Square_H#includerectangle.h#includeusing namespace std;class Square:public Rectangledouble sidelength;public:Square(int x=0,int y=0,double s=0.0):Rectangle(x,y)Seta(s);void Seta(double s)sidelength=s;virtual double Area() constreturn sidelength*sidelength;virtual double V

12、olume() constreturn 0.0;virtual void Print() constcoutLeft Top Vertex=;Point:Print();cout;Length=sidelengthendl;virtual void PrintShapeName() constcoutSquare:;#endifmain.h/要求:派生出圆柱类和正方形类,计算面积、体积#include#includeshape.h#includepoint.h#includecircle.h#includerectangle.h#includesquare.h#includecylinder.husing namespace std;/为何系统报

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号