首页 > 代码库 > 立方体类公用抽象类

立方体类公用抽象类

写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。用如下的main()函数,求出定义的几个几何体的面积和


程序代码

#include <iostream>

using namespace std;

class CSolid//立方体类
{
public:
    //计算立方体的表面积
    virtual double Area() = 0;

    //计算立方体的体积
    virtual double Volume() = 0;
};


//立方体类派生出正方体类
class CCube : public CSolid
{
public:
    CCube(double a)
    {
        this->a = a;
    }
    
    //计算正方体的表面积
    virtual double Area()
    {
        return 6 * a * a;
    }

    //计算正方体的体积
    virtual double Volume()
    {
        return a * a * a;
    }

protected:
    int a;//正方体的边长
};


//立方体类派生出球体类
class CBall : public CSolid
{
public:
    CBall(double r)
    {
        this->r = r;
    }

    //计算球体的表面积
    virtual double Area()
    {
        return 4 * 3.14 * r * r;
    }

    //计算球体的体积
    virtual double Volume()
    {
        return 4 * 3.14 * r * r;
    }

protected:
    double r;
};


//立方体类派生出圆柱体类
class CCylinder : public CSolid
{
public:

    CCylinder(double r, double h)
    {
        this->r = r;
        this->h = h;
    }

    //计算圆柱体的表面积
    virtual double Area()
    {
        return 2 * 3.14 * r * (r + h);
    }

    //计算圆柱体的体积
    virtual double Volume()
    {
        return 3.14 * r * r * h;
    }

protected:
    double r;
    double h;
};


void 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;  

    system("pause");
}


执行结果:


立方体类公用抽象类