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

« Previous Tutorial Next Tutorial »



Tools
Calculator

Quick Links
Signup - Login - Give Online Test