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