第十三周项目4—立体类族共有的抽象类
2016-05-26 18:35
267 查看
/* *Copyright(c) 2016.烟台大学计算机与控制工程学院 *ALL rights reserved. *文件名称:test.cpp *作者:杨驰 *完成日期:2016年5月26 *问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder, 分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个 抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 */ #include<iostream> using namespace std; const double pa=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 c; c=6*length*length; return c; } double CCube::Volume()const { double c; c=length*length*length; return c; } // 球体类 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 c; c=4*pa*radius*radius; return c; } double CBall::Volume()const { double c; c=(4*pa*radius*radius*radius)/3; return c; } // 圆柱体类 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 c; c=2*pa*radius*radius+2*pa*radius*height; return c; } double CCylinder::Volume()const { double c; c=pa*radius*radius*height; return c; } int main() { CSolid *p; double s,v; CCube x(10); cout<<"立方体边长为 10 "<<endl; p=&x; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(5); cout<<"球体半径为 5"<<endl; p=&y; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(5,10); cout<<"圆柱体底面半径、高分别为 5,10"<<endl; p=&z; s=p->SurfaceArea( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }
运行结果:
相关文章推荐
- Http keep-alive
- 关于Mybatis中foreach的用法以及与service中循环调用dao层中的差异
- android 股票K线图
- poj1080(LCS变形)
- 实现表单checkbox获取已选择的值js代码
- 第二冲刺阶段——站立会议第二天5月26日
- Effective Java 英文 第二版 读书笔记 Item 8:Obey the general contract when overriding equals
- HDU 3635 并查集
- Android WebView 不能加载出全部网页
- 软件补丁问题([网络流24题之12])[状态压缩+最短路径]
- mysql auto increment特性说明
- 函数指针与回调函数
- 使用 SCons
- CSS 层叠及样式表来源
- MVP
- 绘图
- QQ群通过关键字查找不到在线客服申诉的办法
- 解决DEDECMS Call to undefined function dede_htmlspecialchars()
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
- 王学岗自定义控件(二)