您的位置:首页 > 其它

立体类族共有的抽象类

2016-05-31 20:17 288 查看

#include <iostream>

using namespace std;

class CSolid

{

    public:

      virtual  double  area()const;//表面积

    virtual  double  volume()const;//体积

};

class CCube:public CSolid{

public:

    CCube(double a){A=a;}

    double  area()const{return  A*A*6; }

    double  volume()const{return  A*A*A;}

private:

    double A;

};

class CBall:public CSolid{

public:

    CBall(double r){R=r;}

    double  area()const{return  4*3.141593*R*R; }

    double  volume()const{return  3.141593*1.333*R*R*R;}

private:

    double R;

};

class CCylinder:public CSolid{

public:

    CCylinder(double r,double h){R=r;H=h;}

    double  area()const{return  3.141593*R*R*2+2*3.141593*R*H; }

    double  volume()const{return  3.141593*R*R*H;}

private:

    double R,H;

};

int main( )

{

    CSolid *p;

    double s,v;

    CCube x(30);

    cout<<"立方体边长为 30 "<<endl;

    p=&x;

    s=p->area( );

    v=p->volume( );

    cout<<"表面积:"<<s<<endl;

    cout<<"体积:"<<v<<endl;

    cout<<endl;

   CBall y(4.5);

    cout<<"球体半径为 4.5 "<<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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: