立体类族共有的抽象类

来源:互联网 发布:破解福利软件分享 编辑:程序博客网 时间:2024/05/19 21:01


#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;
}

1 0
原创粉丝点击