axyd icon

CS391-Polymorphism-20161206

axyd | PRO | 12/06/16 06:57:21 PM UTC | 0 ⭐ | 672 👁️ | Never ⏰ | []
C++ |

1.15 KB

|

None

|

0 👍

/

0 👎

#include<iostream>
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"<<endl;
            cin >> 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;
}

Comments