#include <iostream>
using namespace std;
class Shape
{
public:
Shape() {}
~Shape() {}
virtual float GetArea() { return -1; }
};
class Circle : public Shape
{
public :
Circle(float r):r1(r) { }
~Circle() {}
virtual float GetArea() { return 3.14 * r1 * r1; }
private :
float r1;
};
class Rectangle : public Shape
{
public :
Rectangle (float len ,float width):len (len) , width (width) {}
~Rectangle() { }
virtual float GetArea() { return len * width; }
private :
float len, width;
};
class Square : public Rectangle
{
public:
Square(float len);
~Square() {}
};
Square::Square(float len) :Rectangle(len, len)
{
}
int main()
{
Shape* sp;
sp = new Circle(5);
cout << "The area of the Circle is " << sp->GetArea() << endl;
delete sp;
sp = new Rectangle(4, 6);
cout << "The area of the Rectangle is " << sp->GetArea() << endl;
delete sp;
sp = new Square(5);
cout << "The area of the Square is " << sp->GetArea() << endl;
delete sp;
}