codescracker
c++

C++ Polymorphism



« Previous Tutorial Next Tutorial »

In C++, polymorphism means having many forms. Generally, polymorphism occurs when there is a hierarchy of the classes and they are related by the inheritance.

C++ Polymorphism Example

Here is an example demonstrating polymorphism in C++. Here the base class is derived by the other two classes:

/* C++ Polymorphism - Example Program */

#include<iostream.h>
#include<conio.h>
class JAVAPOLYMORPHISMEXAMPLE
{
   protected:
      int wid, hei;
   public:
      JAVAPOLYMORPHISMEXAMPLE(int a=0, int b=0)
      {
         wid=a;
         hei=b;
      }
      int area()
      {
         cout<<"Parent class area\n";
         return 0;
      }
};
class RECTANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      RECTANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Rectangle class area\n";
         return(wid*hei);
      }
};
class TRIANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      TRIANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Triangle class area\n";
         return(wid*hei/2);
      }
};
void main()
{
   clrscr();
   JAVAPOLYMORPHISMEXAMPLE *sh;
   RECTANGLE rec(10, 7);
   TRIANGLE tri(10, 5);
   sh = &rec;
   sh->area();
   sh = &tri;
   sh->area();
   getch();
}

Here is the sample output of the above C++ program:

c++ polymorphism

As you can see, the output produced is incorrect. Now here we are going to make small changes in JAVAPOLYMORPHISMEXAMPLE class

class JAVAPOLYMORPHISMEXAMPLE
{
   protected:
   int wid, hei;
   public:
   JAVAPOLYMORPHISMEXAMPLE(int a=0, int b=0)
   {
        wid=a;
        hei=b;
   }
   virtual int area()
    {
        cout<<"Parent class area\n";
        return 0;
    }
};

Here is the complete version of the above program after modifying the code:

/* C++ Polymorphism - Example Program */

#include<iostream.h>
#include<conio.h>
class JAVAPOLYMORPHISMEXAMPLE
{
   protected:
      int wid, hei;
   public:
      JAVAPOLYMORPHISMEXAMPLE(int a=0, int b=0)
      {
         wid=a;
         hei=b;
      }
      virtual int area()
      {
         cout<<"Parent class area\n";
         return 0;
      }
};
class RECTANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      RECTANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Rectangle class area\n";
         return(wid*hei);
      }
};
class TRIANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      TRIANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Triangle class area\n";
         return(wid*hei/2);
      }
};
void main()
{
   clrscr();
   JAVAPOLYMORPHISMEXAMPLE *sh;
   RECTANGLE rec(10, 7);
   TRIANGLE tri(10, 5);
   sh = &rec;
   sh->area();
   sh = &tri;
   sh->area();
   getch();
}

Here is the sample output of the above C++ program:

polymorphism in c++

Virtual Function

You are free to declare virtual functions in C++ just by using the keyword virtual. Here is a small code fragment, showing the example of pure virtual function in C++:

class JAVAPOLYMORPHISMEXAMPLE
{
   protected:
      int wid, hei;
   public:
      JAVAPOLYMORPHISMEXAMPLE(int a=0, int b=0)
      {
         wid=a;
         hei=b;
      }
      // this is the pure virtual function
      virtual int area() = 0;
};

Here = 0 tells the C++ compiler that this function has no body and the above virtual function will be called as pure virtual function in C++. Here is the complete version of the above C++ program:

/* C++ Polymorphism - Example Program */

#include<iostream.h>
#include<conio.h>
class JAVAPOLYMORPHISMEXAMPLE
{
   protected:
      int wid, hei;
   public:
      JAVAPOLYMORPHISMEXAMPLE(int a=0, int b=0)
      {
         wid=a;
         hei=b;
      }
      virtual int area() = 0;
};
class RECTANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      RECTANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Rectangle class area\n";
         return(wid*hei);
      }
};
class TRIANGLE:public JAVAPOLYMORPHISMEXAMPLE
{
   public:
      TRIANGLE(int a=0, int b=0):JAVAPOLYMORPHISMEXAMPLE(a, b)
      {
      }
      int area()
      {
         cout<<"Triangle class area\n";
         return(wid*hei/2);
      }
};
void main()
{
   clrscr();
   JAVAPOLYMORPHISMEXAMPLE *sh;
   RECTANGLE rec(10, 7);
   TRIANGLE tri(10, 5);
   sh = &rec;
   sh->area();
   sh = &tri;
   sh->area();
   getch();
}

Here is the sample run of this C++ program:

c++ polymorphism program

More Example

Here is one more example program, demonstrating polymorphism in C++

/* C++ Polymorphism - Example Program */

#include<iostream.h>
#include<conio.h>
class BASE
{
   protected:
      int a;
      int b;
      int res;
   public:
      void setvar(int x, int y)
      {
         a=x;
         b=y;
      }
      virtual void op() = 0;
      int getresult()
      {
         return res;
      }
};
class ADD:public BASE
{
   public:
      void op()
      {
         res=a+b;
      }
};
class SUB:public BASE
{
   public:
      void op()
      {
         res=a-b;
      }
};
void main()
{
   clrscr();
   int m, n;
   BASE *bo;
   ADD ao;
   SUB so;
   cout<<"Enter two number: ";
   cin>>m>>n;
   bo=&ao;
   bo->setvar(m, n);
   bo->op();
   cout<<"\nResult of Summation: "<<bo->getresult();
   bo=&so;
   bo->setvar(m, n);
   bo->op();
   cout<<"\nResult of Subtraction: "<<bo->getresult();
   getch();
}

Below is the sample run of the above C++ program:

c++ polymorphism example

C++ Online Test


« Previous Tutorial Next Tutorial »



© Copyright 2021. All Rights Reserved.

CodesCracker