//test.cc
#include <iostream>
using namespace std;
const float PI = 3.1415;
/****************************
*多态的简单应用
*创建时间:2011.07.25
*修改时间:2011.07.25
*作者:hahaya
*****************************/
class Shape
{
public:
virtual float area() = 0;
};
class Rectangle:public Shape
{
public:
Rectangle(float length, float width)
{
this->length = length;
this->width = width;
}
float area()
{
return length*width;
}
private:
float length;
float width;
};
class Circle:public Shape
{
public:
Circle(int r)
{
this->r = r;
}
float area()
{
return PI*r*r;
}
private:
float r;
};
class TotalArea
{
public:
void Total(Shape *sh)
{
total += sh->area();
}
void PrintArea()
{
cout << "Toal Area:" << total << endl;
}
private:
float total;
};
int main()
{
Shape *sh1 = new Rectangle(5, 10);
Shape *sh2 = new Circle(1);
TotalArea tot;
tot.Total(sh1); //调用Rectangle类的area()函数
tot.Total(sh2); //调用Circle类的area()函数
tot.PrintArea();
return 0;
}
程序运行结果:
![](http://hi.csdn.net/attachment/201107/27/0_1311779857FY8H.gif)