7.试定义RECT类(长方形)及其派生类CUB(长方体)

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");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值