/* File : example.c */ #include "example.h" #include #define M_PI 3.14159265358979323846 // Static member initializer int Shape::nshapes = 0; // Constructor Shape::Shape() { nshapes++; } // Move the shape to a new location void Shape::move(double dx, double dy) { x += dx; y += dy; } // Destructor Shape::~Shape() { nshapes--; } // Circle area double Circle::area() const { return M_PI*radius*radius; } // Circle perimeter double Circle::perimeter() const { return 2*M_PI*radius; } // Square area double Square::area() const { return width*width; } // Square perimeter double Square::perimeter() const { return 4*width; }