第13周项目3立体类族共有的抽象类
2015-05-30 11:00
274 查看
#include <iostream> using namespace std; const double pai=3.14; class CSolid { public: virtual double area()=0; virtual double volume()=0; } ; class CCube:public CSolid { public: CCube(double x=0); double area(); double volume(); private: double length; }; CCube::CCube(double x) { length=x; } double CCube::area() { return 6*length*length; } double CCube::volume() { return length*length*length; } class CBall:public CSolid { private: double radius; // 圆周率 public: CBall(double r=0); double area(); // 求表面积 double volume(); // 求体积; }; CBall::CBall(double r) { radius=r; } double CBall::area() { return 4*pai*radius*radius; } double CBall::volume() { return pai*radius*radius*radius*4/3; } class CCylinder:public CSolid { public: CCylinder(double r=0,double h=0); double area(); // 求表面积 double volume(); // 求体积; private: double radius,height; }; CCylinder::CCylinder(double r,double high) { radius=r; height=high; } double CCylinder::area() { double c; c=2*pai*radius*radius+2*pai*radius*height; return c; } double CCylinder::volume() { double c; c=pai*radius*radius*height; return c; } int main( ) { CSolid *p; double s,v; CCube x(3); cout<<"立方体边长为 3 "<<endl; p=&x; s=p->area( ); v=p->volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(4.0); cout<<"球体半径为 4.0 "<<endl; p=&y; s=p->area( ); v=p->volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,20); cout<<"圆柱体底面半径、高分别为 10, 20"<<endl; p=&z; s=p->area( ); v=p->volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }
相关文章推荐
- Linux的概念与体系(详见网页)
- 3.2-1
- Install JDK on the Cent Os 6.2
- arduino最版!!!!1.6.4官方正版
- Poj(2182)——Lost Cows(线段树)
- ubuntu 更改文件所属用户
- 手把手教你android通过PHP操作Mysql(1)
- Keepalived与LVS
- 面试题1
- 安卓的进程与线程及其相关代码实现
- linux(centos7)搭建nginx服务器
- depot用例视图建模
- LVS 的web工具Piranha和节点监控工具Ldirector
- Page、Request、Session、Application
- 连续时间马尔科夫过程
- LVS 负载均衡集群
- Mac OS 下的Vim使用系统剪切板
- 社説 20150530 安保法案審議 専守防衛の本質は変わらない
- IOS逆向工程
- Spring基础