第十二周项目三立体类族共有的抽象类
2015-06-06 11:24
344 查看
/*Copyright(c)2014,烟台大学计算机学院 *Allrights reserved. *文件名称:MADE2.cpp *作 者:张生栋 *完成日期:2015年6月6日 *问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder, 分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类) 。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 *输入描述:无 *输出描述:略 *版 本 号:v1.0 */ #include <iostream> using namespace std; const double pi=3.1415926; class CSolid { public: virtual double SurfaceArea() const=0; virtual double Volume() const=0; }; class CCube:public CSolid { public: CCube(double len=0); double SurfaceArea() const; double Volume() const; private: double length; }; CCube::CCube(double len) { length=len; } double CCube:: SurfaceArea() const { double s; s=6*length*length; return s; } double CCube:: Volume() const { double v; v=length*length*length; return v; } class CBall:public CSolid { public: CBall(double r=0); double SurfaceArea() const; double Volume() const; private: double radius; }; CBall::CBall(double r) { radius=r; } double CBall:: SurfaceArea() const { double s; s=4*pi*radius*radius; return s; } double CBall:: Volume() const { double v; v=pi*radius*radius*radius*4/3; return v; } class CCylinder:public CSolid { public: CCylinder(double r=0,double h=0); double SurfaceArea() const; double Volume() const; private: double radius; double height; }; CCylinder::CCylinder(double r,double h) { radius=r; height=h; } double CCylinder:: SurfaceArea() const { double s; s=pi*radius*radius*2+2*pi*radius*height; return s; } double CCylinder:: Volume() const { double v; v=pi*radius*radius*height; return v; } int main() { CSolid *p; double s,v; CCube x(30); cout<<"立方体边长为 30 "<<endl; p=&x; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(4.5); cout<<"球体半径为 4.5 "<<endl; p=&y; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,20); cout<<"圆柱体底面半径、高分别为 10, 20"<<endl; p=&z; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }
运行结果:
相关文章推荐
- 我的互联网安全观
- 序列帧动画
- Navicat连接Oracle出现ORA-28457错误的解决方案
- java android 按拼音排序
- SVN优化(一) SVN的忽略maven项目的target
- mfc static控件 视频播放 闪屏问题 解决方案
- CSS网页切图实例教程下
- Struts1.2基本配置入门
- oracle查询 :一个角色包括的系统权限,对象权限,Oracle有多少种角色,某个用户有什么角色
- JavaScript中的replace()方法使用详解
- BCM芯片L2 Ingress Packet处理流程
- itk::InvalidRequestedRegionError
- imp 遇到ORA-12899错误,解决方法
- UIView属性
- 数据库?:数据库安全
- 让Souce Insight支持多种语言的语法高亮:Python,Ruby,ARM汇编,windows脚本文件(bat/batch),PPC,SQL,TCL,Delphi等
- Tcp客户端并发登录
- 13 结构型模式-----代理模式
- win10预览版10134拒绝后续预览版推送方法
- 网狐平台游戏开发