//Listing 13.7. Shape classes. #include using namespace std; enum BOOL { FALSE, TRUE }; class Shape { public: Shape(){} ~Shape(){} virtual long GetArea() { return -1; } // error virtual long GetPerim() { return -1; } virtual void Draw() {} private: }; class Circle : public Shape { public: Circle(int radius):itsRadius(radius){} ~Circle(){} long GetArea() { return 3 * itsRadius * itsRadius; } long GetPerim() { return 9 * itsRadius; } void Draw(); private: int itsRadius; int itsCircumference; }; void Circle::Draw() { cout << "Circle drawing routine here!\n"; } class Rectangle : public Shape { public: Rectangle(int len, int width) : itsLength(len), itsWidth(width){} ~Rectangle(){} virtual long GetArea() { return itsLength * itsWidth;} virtual long GetPerim() {return 2 * itsLength + 2 * itsWidth; } virtual int GetLength() { return itsLength; } virtual int GetWidth() { return itsWidth; } virtual void Draw(); private: int itsWidth; int itsLength; }; void Rectangle::Draw() { for (int i = 0; i> choice; switch (choice) { case 1: sp = new Circle(5); break; case 2: sp = new Rectangle(4,6); break; case 3: sp = new Square(5); break; default: fQuit = TRUE; break; } if (fQuit) break; sp->Draw(); cout << "\n"; } return 0; }