定义一个抽象基类四边形(Duadrangle)类

定义一个抽象基类四边形(Duadrangle)类,Duadrangle类包含3个纯虚函数out_name,area,volume,分别输出不同形状的名字、计算不同形状的面积和体积。以它为基类,派生一个长方形(Rectangle)类,增加数据成员长(len)和宽(width);再以Rectangle类为基类,派生一个长方体(Cuboid)类,增加数据成员高(high)。要求:(1)使用带有参数的构造函数对Rectangle类进行初始化,使用构造函数初始化表对Cuboid类进行初始化;(2)使用基类指针分别输出Rectangle类和Cuboid类名字、面积和体积。

img

代码:


class Duadrangle
{
public:
    Duadrangle(){};
    ~Duadrangle(){};
    virtual void out_name()=0;
    virtual void area()=0;
    virtual void volume()=0;
};

class Rectangle:public Duadrangle
{
public:
    Rectangle(int i_len,int i_width)
    {
        len=i_len;
        width=i_width;
    }
    void out_name()
    {
        printf("Rectangle\n");
    }
    void area()
    {
        printf("area = %d\n",len*width);
    }
    void volume(){}
    int len,width;
};

class Cuboid:public Rectangle
{
public:

    Cuboid(int i_len,int i_width,int i_high):Rectangle(i_len,i_width)
    {
        high=i_high;
        //len=i_len;
        //width=i_width;
    }
    void out_name()
    {
        printf("Cuboid\n");
    }
    void area()
    {
        printf("area = %d\n",len*width);
    }
    void volume()
    {
        printf("volume = %d\n",len*width*high);
    }


    int high;
};


int main()
{

    Rectangle rect(10,20);
    rect.out_name();
    rect.area();
    Cuboid cub(10,20,30);
    cub.out_name();
    cub.area();
    cub.volume();


    return 0;
}