7.试定义RECT类(长方形)及其派生类CUB(长方体),具体要求如下:
(1)类RECT的成员如下:(a)保护数据成员double x,y;分别表示长方形的长和宽。(b)公有成员函数
RECT(double x1,doubley1);构造函数,分别用x1、y1初始化x和y。
virtual double area):虚函数,计算长方形的面积,计算公式:面积=长x宽。
double peri();计算长方形的周长。计算公式:周长=2x长+2x宽。
virtual int isSquare):虚函数,判断是否为正方形,如是,返回1:否则返回0。
(2)类CUB为类RECT的公有派生类,其成员如下:
(a) 私有数据成员
double height; 表示长方体的高度。
(b) 公有成员函数
CUB();构造函数,用h、x、y分别初始化height及其基类成员x和y。
double volume:计算长方体的体积。计算公式:体积=底面积x高,其中底面积通过调用基类成员函数area(()计算。
double area0:计算长方体的表面积。计算公式:表面积=2x底面积+底面周长x高度。
底面积和底面周长分别调用基类成员函数area()和peri()计算。
int isSquare0:判断是否为正方体,如是,返回 1,否则返回 0。
在判断过程中,首先调用基类的成员函数isSquare()判断底面是否为正方形。
(3)在主函数中,创建一个CUB对象cu和一个RECT指针*re,并使re指向cu。通过cu调用volume().
计算并输出长方体的体积;通过re调用area()和isSquare(),计算并输出长方体的表面积,并判断是否为下方体。
#include<iostream>
using namespace std;
class RECT//长方形
{
protected:
double x1;
double y1;
public:
RECT(double x1=0, double y1=0)
{
this->x1 = x1;
this->y1 = y1;
}
virtual double area()//虚函数计算面积
{
return x1 * y1;
}
double peri()//计算周长
{
return 2 * (x1 + y1);
}
virtual int isSquare()
{
if (x1 == y1)
return true;
else
false;
}
};
class CUB :public RECT
{
protected:
double height;
public:
CUB(double x=0, double y=0, double z=0) :RECT(x, y)
{
this->height = z;
}
double volume()//体积
{
return (RECT::area() * this->height);
}
virtual double area()
{
return (RECT::area()*2+peri()*this->height);
}
int isSquare()
{
if (this->x1==this->y1&&this->y1==this->height)
return true;
else
false;
}
};
int main()
{
int a, b, c;
cin >> a >> b >> c;
CUB cu(a, b, c);
RECT* re;
re = &cu;
cout << "长方体的体积为:" << cu.volume() << endl;
cout << "长方体的表面积为:" << re->area() << endl;
if (re->isSquare())
cout << "该长方体是正方体" << endl;
else
cout << "该长方体不是正方体"<<endl;
system("pause");
}