Bootstrap

写一个程序,定义抽象类型Shape,由他派生五个类:

写一个程序,定义抽象类型Shape,由他派生五个类:Circle(圆形),Square(正方形),Rectangle(矩形),Trapezoid(梯形),Triange(三角形)。用虚函数分别计算几种图形的面积,并求他们的和。要求用基类指针数组,使它的每一个元素指向一个派生类的对象。

/*
圆面积S=3.14*r*r
矩形面积S=长*宽
三角形面积S=(底*高)/2
正方形面积S=a*a
梯形面积S=((上底+下底)*高)/2
*/
#include<iostream>  
using namespace std;
#define PI 3.14159

class Shape//抽象基类  
{
public:
	virtual float area()const = 0;
	virtual void display()const = 0;
};
class Circle :public Shape// 圆面积  
{
public:
	Circle(double a) :r(a) {}
	virtual float area()const 
	{ 
		return PI*r*r; 
	}
	virtual void display()const
	{
		cout << "圆面积" << area() << endl;
	}

private:
	double r;
};

class Rectangle :public Shape//矩形面积  
{
public:
	Rectangle(double a, double b) :l(a), w(b) {}
	virtual float area()const 
	{ 
		return l*w;
	}
	
	virtual void display()const
	{
		cout << "矩形面积" << area() << endl;
	}
private:
	double l;
	double w;
};

class Triangle :public Shape//三角形面积  
{
public:
	Triangle(double a, double b) :d(a), h(b) {}
	virtual float area()const 
	{ 
		return (d*h) / 2;
	}
	
	virtual void display()const
	{
		cout << "三角形面积" << area() << endl;
	}
private:
	double d;
	double h;
};
class Square :public Shape//正方形面积  
{
public:
	Square(double a) :a1(a) {}
	virtual float area()const 
	{ 
		return a1*a1; 
	}
	
	virtual void display()const
	{
		cout << "正方形面积" << area() << endl;
	}
private:
	double a1;
};

class Trapezoid :public Shape//梯形面积  
{
public:
	Trapezoid(double sd, double xd, double h) :shad(sd), xiad(xd), hight(h) {}
	virtual float area()const 
	{ 
		return ((shad + xiad)*hight) / 2;
	}
	
	virtual void display()const
	{
		cout << "梯形面积" << area() << endl;
	}
private:
	double shad;
	double xiad;
	double hight;
};

int main()
{
	Circle c1(4);              //圆
	Rectangle r1(3, 6);        //矩形
	Triangle t1(2.5, 5);       //三角形
	Square s1(3.4);            //正方形
	Trapezoid tr1(3.2, 4.5, 7);//梯形
	Shape *p[5] = { &c1,&r1,&t1,&s1,&tr1 };

	int i;
	double m = 0.0;
	for (i = 0; i<5; i++)
	{
		p[i]->display();
		m = m + p[i]->area();
	}

	cout << "总面积:" << m << endl;

}

上一篇:怎样对string对象初始化?

;