×

C++ Polymorphism

Polymorphism refers to the fact that something exists in several forms. Polymorphism, in simple terms, is the ability of a message to be presented in several formats. A real-life example of polymorphism is when two people have distinct qualities at the same time. At the same time, he is a parent, a spouse, and a worker. As a result, the same individual behaves differently in different settings. Polymorphism is the term for this. One of the most significant characteristics of Object Oriented Programming is polymorphism.

Polymorphism in C++ is primarily classified into two types:

  • Polymorphism in compile time
  • Polymorphism at Runtime
C++ Polymorphism

Polymorphism at compile time

 This sort of polymorphism is done by function or operator overloading.

  • Function Overloading: When there are numerous functions with the same name but distinct arguments, this is referred to as overloading. Changes in the amount of arguments or the kind of arguments can cause functions to become overloaded.
  • Overloading Operators:  C++ also allows you to overload operators. For example, we can use the string class's operator ('+') to concatenate two strings. This is the addition operator, and its job is to add two operands. So, when the operator '+' is used between integer and string operands, it adds them together, and when it is used between string operands, it concatenates them.

Polymorphism at Runtime

Function Overriding is used to create this form of polymorphism.

  • Function overriding, on the other hand, happens when a derived class defines one of the base class's member functions. It's alleged that the basic function has been overridden.
  • Virtual function: The term virtual is used to declare a virtual function. A virtual function's return type can be int, float, or void. A virtual function is a base class member function. In a derived class, we can redefine it. It's a type of polymorphism known as run-time polymorphism. The virtual function must be declared in the base class using the term virtual. A virtual function isn't the same as a static function. The virtual function is used to instruct the compiler whether the function should be dynamically bound or late bound. If it's required to refer to all of the distinct classes' objects using a single pointer. This is due to the fact that we will need to build a reference to the base class that will refer to all of the derived objects.
  • Pure Virtual Function: We call such functions "Do-nothing functions" or "Pure virtual functions" when they have no definition. This function's declaration occurs without a definition in the base class.
C++ Polymorphism
Polymorphism at compile timePolymorphism at Runtime
At compilation time, the function to be called is known.At runtime, the function to be called is known.
Overloading, early binding, and static binding are other terms for the same thing.Overriding, Dynamic binding, and late binding are other terms for it.
Overloading is a compile-time polymorphism in which many methods with the same name but different numbers or types of arguments are created.Overriding is a sort of run-time polymorphism in which more than one method has the same name, number of parameters, and parameter type.
Function overloading and operator overloading are used to achieve this.Virtual functions and pointers are used to accomplish this.
As it is known at build time, it allows quick execution.It delivers delayed execution due to the fact that it is known at run time.
It is less flexible since almost everything happens at build time.It's more adaptable since everything happens at the same time.

In C++, a real-time example of polymorphism

When we connect a concept to a real-life example, it becomes evident.

Let's look at a few real-world polymorphism instances in C++.

  • At the same time, a person might have many positions and responsibilities. A woman has several hats to wear throughout her life, including mother, wife, daughter, daughter-in-law, sister, and so on.
  • A guy acts as an office worker, a son or spouse at home, a mall consumer, and so on.
  • A mobile phone is a single device with several functions such as a camera, radio, and so on.

Example of a run-time polymorphism with data members

#include <iostream>    
using namespace std;    
class Animal {                                           
class declaration.  
    public:    
    string color = "White";      
};     
class Rabbit: public Animal                      
Animal class.  
{      
 public:    
    string color = "pink";      
};    
int main(void) {    
     Animal r= Rabbit();      
    cout<<r.color;     
}    

Output

White

Example of run-time polymorphism with two derived classes

#include <iostream>
using namespace std;


class Polygon {
    public:
    virtual void show() {
        cout<<"It is a polygon"<<endl;
    }
};
class Hexagon : public Polygon {
    public:
    void show() {
        cout<<"Hexagon is a 6 sided polygon"<<endl;
    }
};
class Pentagon : public Polygon {
    public:
    void show() {
        cout<<"Pentagon is a 5 sided polygon"<<endl;
    }
};


int main() {
  Polygon *P;
  Hexagon h;
  Pentagon p;
  P = &h;
  P->show();
  P = &p;
  P->show();
  return 0;
}

Output

Hexagon is a 6 sided polygon
Pentagon is a 5 sided polygon

Related Topics

How to run program in turbo c++

What is Turbo C++? Turbo c++ is an integrated development environment (IDE) and a compiler to run C++ code. Turbo c++ helps to link the header files with the main code....

2 minutes read.

User-defined literals in C++

Introduction to User-Defined Literals: User-defined literals, introduced in C++11, are a way to extend the C++ language to allow users to define their literal suffixes and the corresponding behavior. These suffixes...

7 minutes read.

Factorial Program in C++

C++ Factorial Program: The product of all positive descending integers is the factorial of n. n! denotes the factorial of n. For instance: 5! = 5*4*3*2*1=120 4! = 4*3*2*1=24 In Combinations and Permutations, the...

4 minutes read.

Object in C++

In this article, we will learn about Object in C++. In short, an object is a stateful entity with behaviour. Data is referred to as state, and functionality is referred to...

3 minutes read.

C++ Call by Reference

Call by Reference is a C++ method for passing arguments to a function that enables us to pass the actual memory address of the parameter rather than a copy of...

4 minutes read.

What are local class and global class in C++

In C++, a class is a fundamental block that achieves object-oriented programming. The class holds its data members and member functions. Objects help to access the data elements and functions....

4 minutes read.

Multiset in C++

Introduction Multisets are part of the C++ STL, or Standard Template Library. In C++, a multiset is a set of associative containers that hold ordered items. Items in a multiset can...

10 minutes read.

Different Ways to Compare Strings in C++

This section will go over the many methods for comparing strings in the C++ programming language. The string comparison checks if the first string is equal to another string. HELLO...

6 minutes read.

Virtual base class in C++

Consider in a C++ program, there are 4 classes named class A, class B, class C, and class D. If class B and class c inherit properties from class A....

3 minutes read.

C++ Program to find largest subarray with 0 sum

Write a program to find the largest subarray that has a sum zero. The array contains positive and negative numbers. Print the length of the max subarray whose sum turns...

4 minutes read.

Binary Operator Overloading in C++

The Binary Operator Overloading in the C++ programming language will be covered in this part. An operator which comprises two operands to execute a mathematical operation is termed the Binary...

6 minutes read.

C++ Bidirectional Iterators

Iterators : Iterators serve as a link between algorithms and STL containers, allowing the data inside the container to be modified. They let you to iterate through the container, access and...

3 minutes read.

Roadmap to C++ Programming

Introduction There are so many programming languages available in the market, but among them, C++ is something that never lost its charm. It has a powerful impact on the programming world....

4 minutes read.

Constructor Overloading in C++

A Constructor is a class member function that is used to initialize the class's objects. Constructors have no return type and are called automatically when an object is formed. Constructor Characteristics Constructors...

3 minutes read.

Copy constructor

Let's start by learning what a constructor is before diving into the copy constructor in C++. What is a constructor? A constructor is a particular type of class member function that configures the objects of...

7 minutes read.

Approach in C++

Object oriented programming languages like Java or C++ use a bottom-up approach that identifies each object first.  In the bottom-up approach, we create a small problem first, and try to...

6 minutes read.

C++ Fibonacci Series

What is a Fibonacci series? A Fibonacci series or sequence is a very popular programming paradigm. The next element occurring in the N terms series is determined by the sum of...

2 minutes read.

Classes and Objects in C++

When it comes to object-oriented programming, objects are the basic building blocks. Memory is taken up by objects, which contain data and methods or functions that operate on it. On...

3 minutes read.

Unary Operators in C++

Unary operators in C++ Unary operator: is operations that function to produce a new value on a single operand. a) unary minus: A minus operator modifies the argument's symbol. A positive number...

3 minutes read.

How to create a library in C++

Before going on to the creation of a library, let’s understand its meaning. What is a library? In simple words, a library is a collection of numerous functions, methods, classes, header files...

7 minutes read.