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

来源:互联网 发布:禅道 linux 安装 编辑:程序博客网 时间:2024/06/06 01:17

程序代码:

#include <iostream>const double pai=3.1415926;using namespace std;class CSolid{public:    virtual double SurfaceArea() const=0;    virtual double Volume() const=0;};class CCube:public CSolid{private:    double length;public:    CCube(double l):length(l){};    virtual double SurfaceArea() const    {        return 6*length*length;    }    virtual double Volume() const    {        return length*length*length;    }};class CCircle:public CSolid{private:    double radius;public:    CCircle(double r):radius(r){};     virtual double SurfaceArea() const     {         return 6*pai*radius*radius;     }    virtual double Volume() const    {        return 4/3*pai*radius*radius*radius;    }};class CCylinder:public CSolid{private:    double radius;    double heigh;public:    CCylinder(double r,double h):radius(r),heigh(h){};    virtual double SurfaceArea() const    {        return pai*radius*radius*2+2*pai*radius*heigh;    }    virtual double Volume() const    {        return pai*radius*radius*heigh;    }};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;    CCircle 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