C++ Polymorphism4 min read

Polymorphism means having many forms. The word “poly” means many and “morphs” means forms, which means it is the way of performing some task in many ways. That means a single function or an operator functioning in many ways. It is one of the major concepts of Object-oriented programming.

Take a real-life example: A woman can be a mother or daughter and a teacher in a class, that is she posses a different behaviour at different times or situations. Similarly, a class in a program has a method and the subclass have the same method but with a different task to perform related to the first method. This is called polymorphism.

In C++, we have two types of polymorphism and they are:

  • Compile-time Polymorphism or Static (or early) Polymorphism.
  • Runtime Polymorphism or Dynamic (or late) Polymorphism.

1. Compile time Polymorphism

In this type of program, the flow of control is decided at compile time itself. It is achieved by function overloading and operator overloading. It is also known as static or early binding.

Function Overloading:

The multiple functions having the same name but with different parameters, then these functions are said to be overloaded. When we call those functions, we need to make sure to enter the proper number of arguments along with the proper data type.

Example: C++ example of function overloading.

Output:


Operator Overloading:

To achieve Compile time Polymorphism, operator overloading is also used. Operator overloading means performing different operations with the same operator. The keyword ‘operator‘ is used to overload an operator.

Example: Consider an operator ‘+‘, it is used to add the two numbers but it is also used with string to concatenate two strings. So the ‘+‘ operator when placed between number operands, addition operation is done but when placed between string operands, it concatenates them.

Let us understand through an example: C++ program for operator overloading.

Output:


2. Run time Polymorphism

In run time polymorphism, the program is called at the time of execution that is at rum time. It is also known as the late binding or dynamic binding.

This type of polymorphism is achieved by Method Overriding. We use virtual functions and pointers to achieve this.

Function Overriding:

Function overriding allows us to define a function at a derived class that is already present in a base class. And that base is said to be overridden.

And the decision made to call the required function is done at the run time. Hence, the Runtime polymorphism.

Example: C++ example of function overriding.

Output:


Differences between Compile time and Run time Polymorphism

Compile-time polymorphismRun time polymorphism
In this type of program, the flow of control is decided at compile time itself.The program is called at the time of execution that is at rum time
It is achieved by function overloading and operator overloadingIt is achieved by function overriding and virtual function.
Also called static or early binding.Also called late binding or dynamic binding.
Here, the methods have the same name but with a different number of parameters or the type of parameters.Here, the methods have the same name, the same number of parameters, or the type of parameters.
As it happens at compile-time, therefore provides a fast execution.As it happens at run-time, therefore provides a slow execution.

MORE

C Program to search an element in an array using Pointers

A separate function( search_function()) will be created where the array pointer will be declared and the searched element along with the size of an array …

C Program to find the sum of the digits of a number using recursion function

This C program calculates the sum of digits of a given number using recursion. Here’s a concise explanation: Function Definition: sumDigits(int n) This function calculates …

C program to find factorial of a numberĀ using Ternary operator with Recursion

Recursion refers to the function calling itself directly or in a cycle. Before we begin, you should have the knowledge of following in C Programming: …

C Program to Add Two Numbers Using Call by Reference

The program takes the two numbers from the user and passes the reference to the function where the sum is calculated. You may go through …

Find the output ab, cd, ef, g for the input a,b,c,d,e,f,g in Javascript and Python

In this tutorial, we will write a program to find a pairs of elements from an array such that for the input [a,b,c,d,e,f,g] we will …

String Pattern Programs in C

In this tutorial, we will write various C pattern programs for String. Before that, you may go through the following topics in C. for loop …