多态的简单应用

//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;
}

程序运行结果:


你可能感兴趣的:(多态)