1 /* File : example.cxx */
2 
3 #include "example.h"
4 #define M_PI 3.14159265358979323846
5 
6 /* Move the shape to a new location */
move(double dx,double dy)7 void Shape::move(double dx, double dy) {
8   x += dx;
9   y += dy;
10 }
11 
12 int Shape::nshapes = 0;
13 
Circle(double r)14 Circle::Circle(double r) : radius(r) {
15   NumCircles++;
16 }
17 
area()18 double Circle::area() {
19   return M_PI*radius*radius;
20 }
21 
perimeter()22 double Circle::perimeter() {
23   return 2*M_PI*radius;
24 }
25 
Square(double w)26 Square::Square(double w) : width(w) {
27   NumSquares++;
28 }
29 
area()30 double Square::area() {
31   return width*width;
32 }
33 
perimeter()34 double Square::perimeter() {
35   return 4*width;
36 }
37 
38 int NumSquares = 0;
39 int NumCircles = 0;
40 
MakeSquare(double r)41 Square MakeSquare(double r) {
42   return Square(r);
43 }
44 
MakeCircle(double w)45 Circle MakeCircle(double w) {
46   return Circle(w);
47 }
48 
49