第十三周项目三-立体类族共有的抽象类

来源:互联网 发布:淘宝客服简历模板 编辑:程序博客网 时间:2024/04/24 17:12
【项目3-立体类族共有的抽象类】

    设计一个抽象类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
原创粉丝点击