1|P ag e
C++ Polymorphism:
The word “polymorphism” means having many forms. In simple words, we can
define polymorphism as the ability of a message to be displayed in more than
one form. A real-life example of polymorphism is a person who at the same time
can have different characteristics. A man at the same time is a father, a husband,
and an employee. So the same person exhibits different behavior in different
situations. This is called polymorphism. Polymorphism is considered one of the
important features of Object-Oriented Programming.
Types of Polymorphism
Compile-time Polymorphism
Runtime Polymorphism
1. Compile-Time Polymorphism
This type of polymorphism is achieved by function overloading or operator
overloading.
A. Function Overloading
When there are multiple functions with the same name but different
parameters, then the functions are said to be overloaded, hence this is known
as Function Overloading. Functions can be overloaded by changing the
number of arguments or/and changing the type of arguments. In simple
terms, it is a feature of object-oriented programming providing many functions
that have the same name but distinct parameters when numerous tasks are
listed under one function name. There are certain Rules of Function
Overloading that should be followed while overloading a function.
Below is the C++ program to show function overloading or compile-time
polymorphism:
2|P ag e
// C++ program to demonstrate
#include <iostream.h>
#include <conio.h>
class FO
{
public:
void func(int x)
{
cout << "value of x is " << x << endl;
}
void func(double x)
{
cout << "value of x is " << x << endl;
}
void func(int x, int y)
{
cout << "value of x and y is " << x << ", " << y<< endl;
}
};
void main()
{
FO obj1;
obj1.func(7);
obj1.func(9.132);
obj1.func(85, 64);
getch();
}
B. Operator Overloading
C++ has the ability to provide the operators with a special meaning for a data
type, this ability is known as operator overloading. For example, we can make
use of the addition operator (+) for string class to concatenate two strings. We
know that the task of this operator is to add two operands. So a single operator
‘+’, when placed between integer operands, adds them and when placed
between string operands, concatenates them.
3|P ag e
Below is the C++ program to demonstrate operator overloading:
#include <iostream.h>
#include <conio.h>
class Complex {
private:
int real, imag;
public:
Complex(int r = 0, int i = 0)
{
real = r;
imag = i;
}
Complex operator+(Complex const& obj)
{
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
void print() { cout << real << " + i" << imag << endl; }
};
int main()
{
Complex c1(10, 5), c2(2, 4);
// An example call to "operator+"
Complex c3 = c1 + c2;
c3.print();
return 0;
}
Output
12 + i9
2. Runtime Polymorphism
This type of polymorphism is achieved by Function Overriding. Late binding
and dynamic polymorphism are other names for runtime polymorphism. The
function call is resolved at runtime in runtime polymorphism.
4|P ag e
Differences b/w compile time and run time
polymorphism