14
void move(double dx, double dy);
15
virtual double area(void) = 0;
16
virtual double perimeter(void) = 0;
20
class Circle : public Shape {
24
Circle(double r) : radius(r) { };
25
virtual double area(void);
26
virtual double perimeter(void);
29
class Square : public Shape {
33
Square(double w) : width(w) { };
34
virtual double area(void);
35
virtual double perimeter(void);
38
extern double do_op(Shape *s, double (Shape::*m)(void));
40
/* Functions that return member pointers */
42
extern double (Shape::*areapt())(void);
43
extern double (Shape::*perimeterpt())(void);
45
/* Global variables that are member pointers */
46
extern double (Shape::*areavar)(void);
47
extern double (Shape::*perimetervar)(void);