虚函数应用实例

这个程序挺好地解释了在指针下,虚函数引导不一样派生类操做的过程(我感受我没在说人话,仍是直接上例子吧)ios

编写程序:定义抽象基类Shape,由它派生出5个派生类:Circle(圆形)、Square(正方形)、Rectangle
(长方形),triangle(三角形),用虚函数分别计算各类图形的面积,并求出它们的和。要求用基类指针
数组。使它的每个元素指向一个派生类的对象。
数组

#include<iostream>
#include<algorithm>
using namespace std;
class Shape
{
	public:
		virtual double area()
		{
			return 1.00;
		}
};
class Circle:public Shape
{
	double r;
	public:
		Circle(double d):r(d){};
		double area()
		{
			return 3.1415926*r*r;
		}
};
class Square:public Shape
{
	double length;
	public:
		Square(double l):length(l){};
		double area()
		{
			return length*length; 
		}
};
class Rectangle:public Shape
{
	double length,height;
	public:
		Rectangle(double l,double h):length(l),height(h){};
		double area()
		{
			return length*height;
		}
};
class Triangle:public Shape
{
	double di,height;
	public:
		Triangle(double d,double h):di(d),height(h){};
	double area()
	{
		return (height*di)/2;
	}
};
int main()
{
	Shape *p;
	double result=0;
	Circle c(3);
	Square s(12.2);
	Rectangle r(2.3,5);
	Triangle t(3.3,5.6);
	p=&c;result+=p->area();
	p=&s;result+=p->area();
	p=&r;result+=p->area();
	p=&t;result+=p->area();
	cout<<"总面积为:"<<result<<endl;
	return 0;
}