0% found this document useful (0 votes)
162 views

Compile Time Polymorphism in C++

This document discusses two types of polymorphism in C++ - compile time polymorphism and runtime polymorphism. Compile time polymorphism includes function overloading and operator overloading, which allow a single function to behave differently depending on the number and types of arguments passed. Runtime polymorphism involves overriding virtual functions in derived classes.

Uploaded by

virat rehani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
162 views

Compile Time Polymorphism in C++

This document discusses two types of polymorphism in C++ - compile time polymorphism and runtime polymorphism. Compile time polymorphism includes function overloading and operator overloading, which allow a single function to behave differently depending on the number and types of arguments passed. Runtime polymorphism involves overriding virtual functions in derived classes.

Uploaded by

virat rehani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Polymorphism in C++

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.
Real life example of polymorphism, a person at the same time can have different characteristic.
Like a man at the same time is a father, a husband, a Teacher. So, the same person has different
behaviors in different situations. This is called polymorphism.
Polymorphism is considered as one of the important features of Object Oriented Programming.
In C++ polymorphism is mainly divided into two types:
1. Compile time Polymorphism
2. Runtime Polymorphism

Compile time polymorphism:


This type of polymorphism is achieved by function overloading or operator overloading.
Function Overloading:
When there are multiple functions with same name but different parameters then these
functions are said to be overloaded. Functions can be overloaded by change in number of
arguments or/and change in type of arguments.
// C++ program for function overloading
#include <bits/stdc++.h>
using namespace std;
class Vir
{
public:
// function with 1 int parameter
void func(int x)
{
cout << "value of x is " << x << endl;
}
// function with same name but 1 double parameter
void func(double x)
{
cout << "value of x is " << x << endl;
}
// function with same name and 2 int parameters
void func(int x, int y)
{
cout << "value of x and y is " << x << ", " << y << endl;
}
};
int main() {
Vir obj1;

// Which function is called will depend on the parameters passed


// The first 'func' is called
obj1.func(7);

// The second 'func' is called


obj1.func(9.132);

// The third 'func' is called


obj1.func(85,64);
return 0;
}
Output:

value of x is 7
value of x is 9.132
value of x and y is 85, 64
In the above example, a single function named func acts differently in three different situations
which is the property of polymorphism.
Operator Overloading:
C++ also provide option to overload operators. For example, we can make the operator (‘+’) for
string class to concatenate two strings. We know that this is the addition operator whose task is
to add two operands. So a single operator ‘+’ when placed between integer operands, adds
them and when placed between string operands, concatenates them.
Example:
// CPP program to illustrate
// Operator Overloading
#include<iostream>
using namespace std;
class Complex
{
private:
int real, imag;
public:
Complex(int r = 0, int i =0)
{
real = r; imag = i;
}
// This is automatically called when '+' is used with
// between two Complex objects
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);
Complex c3 = c1 + c2; // An example call to "operator+"
c3.print();
}
Output:

12 + i9
In the above example the operator ‘+’ is overloaded. The operator ‘+’ is an addition operator
and can add two numbers(integers or floating point) but here the operator is made to perform
addition of two imaginary or complex numbers.

You might also like