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

来源:互联网 发布:c语言sqrt函数 编辑:程序博客网 时间:2024/06/05 18:03
/*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;}

运行结果:


0 0
原创粉丝点击