#include using namespace std; class geometricobject { //baseclass public: virtual void geo( ) { cout << "Just a geometric object" << endl; } }; class rectangle : public geometricobject { //derived class public: virtual void geo( ) { cout << "I'm a rectangle" << endl; } }; class circle : public geometricobject { // derived class public: virtual void geo( ) { cout << "I'm a circle" << endl; } }; int main( ) { geometricobject *ptr; //pointer to base class int which, rerun=1; while(rerun==1) { do { cout << "Enter:\n\t" <<"1 for geometricobject\n\t" <<"2 for rectangle\n\t" <<"3 for circle\n\t" <<"4 to quit"<> which; } while (which < 1 || which > 4); switch (which) { //set pointer depending on user choice case 1: ptr = new geometricobject; break; case 2: ptr = new rectangle; break; case 3: ptr = new circle; break; case 4: rerun=0; break; } if (rerun==0) break; ptr -> geo( ); //run-time binding delete ptr; //don’t leave junk hanging around } return 0; }