类的设计和实现II---自定义图形层次体系

【问题描述】

编写一个程序,定义抽象基类Shape,由它派生出3个派生类:Circle(圆形),Square(正方形),Rectangle(矩形)。Square正方形派生出了cube正方体。

用虚函数分别计算几种图形面积或体积,并求用基类指针数组,使它每一个元素指向一个派生类对象。

#include <iostream>
using namespace std;
class Shape {
	public:
		virtual void area() {};
		virtual void volume() {};
};
class Circle:public Shape {
	public:
		Circle() {
			r=0.0;
		}
		void area() {
			cout<<3.14159*r*r;
		}
		virtual void volume() {};
		Circle(float r):r(r) {}
	private:
		float r;
};
class Square:public Shape {
	public:
		Square() {
			a=0.0;
		}
		void area() {
			cout<<a*a;
		}
		virtual void volume() {};
		Square(float a):a(a) {}
	protected:
		float a;
};
class Rectangle:public Shape {
	public:
		Rectangle() {
			l=0.0;
			k=0.0;
		}
		void area() {
			cout<<k*l;
		}
		virtual void volume() {};
		Rectangle(float l,float k):l(l),k(k) {}
	private:
		float k,l;
};
class cube:public Square {
	public:
		cube(float a2):Square(a),a1(a2) {}
		void volume() {
			cout<<a1*a1*a1;
		}
		virtual void area() {};
	private:
		float a1;
};
int main() {
	Shape *p[4];
	cout<<"请依次输入圆的半径、正方形(立方体)的边长、长方体的长和宽"<<endl;
	float r1,a1,l1,k1;
	cin>>r1>>a1>>l1>>k1;
	p[0]=new Circle(r1);
	p[1]=new Square(a1);
	p[2]=new Rectangle(l1,k1);
	p[3]=new cube(a1);
	cout<<"圆的面积为:";
	p[0]->area();
	cout<<endl;
	cout<<"正方形的面积为:";
	p[1]->area();
	cout<<endl;
	cout<<"正方体的体积为:";
	p[3]->volume();
	cout<<endl;
	cout<<"长方形的面积为:";
	p[2]->area();
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HanWLang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值