#include <iostream>
using std::cout;
using std::endl;
class Shape {
public:
Shape() {}
virtual ~Shape() {}
virtual double Area() = 0;
virtual double Perimeter() = 0;
private:
};
class Circle : public Shape {
public:
Circle(int _radius) :radius(_radius) {}
virtual ~Circle() {}
double Area() { return 3.14 * radius * radius; }
double Perimeter() { return 2 * 3.14 * radius; }
private:
int radius;
};
class Rectangle : public Shape {
public:
Rectangle(int _length, int _width) : length(_length), width(_width) {}
virtual ~Rectangle() {}
double Area() { return length * width; }
double Perimeter() { return 2 * length + 2 * width; }
private:
int length;
int width;
};
int main()
{
Shape *p;
p = new Circle(7);
cout << p->Area() << endl;
cout << p->Perimeter() << endl;
delete p;
p = new Rectangle(3, 5);
cout << p->Area() << endl;
cout << p->Perimeter() << endl;
delete p;
return 0;
}
/*
run:
153.86
43.96
15
16
*/