继承与派生练习:定义一个基类Shape,在次基础上派生出Rectangle和Circle。二者都有GetArea()函数计算对象的面积。使用Rectangle类创建一个派生类Square.

#include<iostream>
#include<string>
using namespace std;
class Shape {
public:
	Shape() {}
	virtual ~Shape(){}
	virtual float getArea() const { return 0; }
};

//长方形
class Rectangle :public Shape { 
public:
	Rectangle(float Length, float Width) :length(Length), width(Width) {}
	float getArea() const { return length*width; }
	float getLength() const { return length; }
	float getWidth() const { return width; }
	void setLength(float Length) { length = Length; }
	void setWidth(float Width) { width = Width; }
private:
	float length;
	float width;
};


//圆形
class Circle :public Shape {
public:
	Circle(float Radius) :radius(Radius){}
	/*Circle() {}*/
	float getArea() const { return radius*radius*3.14; }
	float getRadius() const { return radius; }
	
	void setRadius(float Radius) { radius = Radius; }
	
private:
	float radius;
	
};

//正方形
class Sqare :public Rectangle {
public:
	Sqare(float Side) :Rectangle(Side, Side){}
	void setSide(float Side) //设置边长
	{ 
		setLength(Side); 
		setWidth(Side);

	}
	float getSide() const //获取边长
	{
		return getWidth();
	}

	float getArea() const { return Rectangle::getArea(); }
};





void main()
{
	Shape *p;
	p = new Circle(5);
	cout << "area of circle:" << p->getArea()<<endl;
	p = new Rectangle(4, 8);
	cout << "area of Rec:" << p->getArea() << endl;

}
  • 13
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值