第13周-项目4-立体类族共有的抽象类
来源:互联网 发布:java 无参数构造方法 编辑:程序博客网 时间:2024/05/21 11:01
问题及代码:
/*Copyright (c)2016,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:main.cpp*作 者:王艺霖*完成日期:2016年5月26日*版 本 号:v1.0*问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。*输入描述:*输出描述:*/#include "iostream"using namespace std;const double pai=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{private:double radius;public:CBall(double r=0);double SurfaceArea() const;double Volume() const;};CBall::CBall(double r){radius=r;}double CBall::SurfaceArea() const{double c;c=4*pai*radius*radius;return c;}double CBall::Volume() const{double c;c=pai*radius*radius*radius*4/3;return c;}class CCylinder : public CSolid{private:double radius;double height;public:CCylinder(double r=0,double high=0);double SurfaceArea() const;double Volume() const;};CCylinder::CCylinder(double r,double high){radius=r;height=high;}double CCylinder::SurfaceArea() const{double c;c=2*pai*radius*radius+2*pai*radius*height;return c;}double CCylinder::Volume() const{double c;c=pai*radius*radius*height;return c;}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;}
运行结果:
0 0
- C++第13周项目 多态性 【项目4-立体类族共有的抽象类】
- 第13周实践项目4立体类族共有的抽象类
- 第13周-项目4-立体类族共有的抽象类
- 第13周项目4-立体类族共有的抽象类
- 第13周项目4-立体类族共有的抽象类
- 第13周项目4:立体类族共有的抽象类
- 第13周项目4—立体类族共有的抽象类
- 第13周项目4--立体类族共有的抽象类
- 第13周实践项目4立体类族共有的抽象类
- 第13周项目4-立体类族共有的抽象类
- 第13周项目3立体类族共有的抽象类
- 第13周-多态性-项目3-立体类族共有的抽象类
- 第13周项目3—立体类族共有的抽象类
- 第13周上机实践项目3——立体类族共有的抽象类
- 第13周项目3-立体类族共有的抽象类
- 第13周 【项目3-立体类族共有的抽象类】
- 第13周项目3-立体类族共有的抽象类
- 第13周项目3-立体类族共有的抽象类
- 3Sum Closest
- maven不同环境打不同war包
- 加速Android Studio/Gradle构建
- Linux下mysql数据库导入导出
- CodeForces 673 A Bear and Game
- 第13周-项目4-立体类族共有的抽象类
- 【pandas】[5] 数据行列转置,数据透视(stack,unstack,pviot,pviot_table)
- 使用JQuery把元素Div弹出与关闭
- poj 3615(Floyd变形)
- 给 Android 开发者的 RxJava 详解
- Linux进程学习---wait()和waitpid()函数
- 直播系列---资源收集_测试
- 多线程之NSThread、NSOperation及GCD
- linux检查网线是否插入