利用类的组合,实现rectangle矩形类的复用得到square正方形类

本文档展示了如何通过将Rectangle类作为成员来实现Square类,以此达到正方形特性的描述。示例代码中,Square类拥有一个Rectangle实例作为其成员,并重用了Rectangle的面积和周长计算方法。在主函数中,进行了创建Square对象、改变边长、放缩边长等操作,验证了类的功能。
摘要由CSDN通过智能技术生成

1.在已有类rectangle基础上,通过将其作为square类的一个成员,从而得到一个正方形的类

#include<iostream>
#include<string>
using namespace std;

class Rectangle {
public:
	Rectangle(double wid = 1, double hei = 1) :width(wid), height(hei) {};
	double getWidth() { return width; };
	void setWidth(double wid) { width = wid; };
	double getHeight() { return height; }
	void setHeight(double hei) { height = hei; }
	double area() { return width * height; }               //返回面积
	double parimeter() { return (width + height) * 2; }    //返回周长
	void scale(double fw, double fh) { width *= fw; height *= fh; }//放缩长 和 宽
protected:
	double width, height;
};

//利用组合,将rectangle类作为 成员类,实现Square正方形类
class Square
{
public:
	Rectangle rect;  //只能调用默认构造函数--可以在 组合类的构造函数中 调用成员类的 构造函数,
	//悟:可以在 组合类的 构造函数中显示的调用 成员类的 构造函数,虽然组合类构造先开始,但是后结束
	//定义构造函数:
	Square(double len) :rect(len, len), length(len) {};
	void setLen(double len) {
		length = len;
		rect.setWidth(len);
		rect.setHeight(len);
	}
	double getLen() { return this->length; }
	double area() { return rect.area(); } //复用rectangle类的成员函数
	double parimeter() { return rect.parimeter(); }  //复用计算周长
	void scale(double fl) {                   //复用放缩边长
		this->length *= fl;
		rect.scale(fl, fl);
	}
private:
	double length; //边长
};

int main()
{
	//测试:
	Square test(2.5);
	cout << "正方形的面积是 " << test.area() << endl;
	cout << "正方形的 周长是 " << test.parimeter() << endl;
	//重新设定 边长:
	test.setLen(1.5);
	cout << "重新 设定边长: " << endl;
	cout << "正方形的面积是 " << test.area() << endl;
	cout << "正方形的 周长是 " << test.parimeter() << endl;

	//放缩之后
	cout << "放缩之后:" << endl;
	test.scale(2);
	cout << "正方形的面积是 " << test.area() << endl;
	cout << "正方形的 周长是 " << test.parimeter() << endl;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值