Example of polymorphism source code

This snippet submitted by Ali Nawkhas Murad on 2012-01-09. It has been viewed 25115 times.
Rating of 8.5 with 93 votes

 //An example of using overriding techniques to demonstrate function with a polymorphism behaviour. 
#include <iostream>

using namespace std;

// abstract base class
class base
{
    protected:  // attribute section
        int num1;
        int num2;
        int result;
    public:  // behavior section
        void setVar(int n1,int n2)
        {
            num1 = n1;
            num2 = n2;
        }
        virtual void op() = 0;  // pure virtual function
        int getresult() {return result;}
};

class add: public base  // add class inherits from base class
{
  public:
      void op() {result = num1 + num2;}
};

//sub class inherit base class
class sub: public base
{
  public:
      void op() {result = num1 - num2;}
};

int main()
{
    int x,y;
    base *m; //pointer variable declaration of type base class
    add ad;  //create object1 for addition process
    sub su;  //create object2 for subtraction process
    cout << "\nEnter two numbers seperated by space, or press Ctrl+z to Exit: ";

    while(cin >> x >> y)
    {
        m = &ad;
        m->setVar( x , y );
        m->op(); //addition process, even though call is on pointer to base!
        cout << "\nResult of summation = " << m->getresult();
        m = &su;
        m->setVar( x , y );
        m->op(); //subtraction process, even though call is on pointer to base!
        cout << "\nResult of subtraction = " << m->getresult() << endl << endl;
        cout << "\nEnter two numbers seperated by space or press Ctrl+z to Exit: ";
    }
    return 0;
}

/*program output
****************
Enter two numbers seperated by space, or press Ctrl+z to Exit: 88 9

Result of summation = 97
Result of subtraction = 79


Enter two numbers seperated by space or press Ctrl+z to Exit: ^Z

Process returned 0 (0x0)   execution time : 102.711 s
Press any key to continue.
*/


 
 
 




More C and C++ source code snippets

Add a snippet!