C++ Tutorial Index

C++ Tutorial C++ History C++ Installation C++ First Program C++ cin and cout C++ Data type C++ Variable C++ operator C++ Keywords

C++ Control Statements

C++ If C++ Nested if C++ If-else C++ If-else-if C++ Switch C++ Break C++ Continue C++ Goto C++ For loop C++ While loop C++ Do while loop

C++ Functions

C++ Call by Value C++ Call by Reference C++ Recursion Function C++ Inline function C++ Friend function

C++ Arrays

Single dimension array Two dimension array

C++ Strings

C++ Strings

C++ Inheritance

C++ Inheritance Single level Inheritance Multilevel Inheritance Multiple Inheritance Hierarchical Inheritance Hybrid Inheritance

C++ Polymorphism

C++ Polymorphism C++ Overloading C++ Overriding C++ Virtual Function

C++ Pointers

C++ Pointers C++ this pointer

C++ Exception Handling

C++ Exception Handling

C++ Constructors

C++ Constructors Default Constructor Parameterize Constructor Copy constructor Constructor Overloading Destructor

C++ File Handling

C++ File Handling C++ Writing to file C++ Reading file C++ Close file

Miscellaneous

C Vs C++ C++ Comments C++ Data Abstraction C++ Identifier C++ Memory Management C++ Storage Classes C++ Void Pointer C++ Array To Function C++ Expressions C++ Features C++ Interfaces C++ Encapsulation std::min in C++ External merge sort in C++ Remove duplicates from sorted array in C++ Precision of floating point numbers Using these functions floor(), ceil(), trunc(), round() and setprecision() in C++ C++ References C++ Friend Functions C++ Mutable keyword Unary Operators in C++ Initialize Array of objects with parameterized constructors in C++ Differences between #define & const in C/C++ C++ Program to Implement Shell Sort C++ Program to Implement Merge Sort Storage Classes in C Vector resize() in C++ Passing by Reference Vs. Passing by the pointer in C++ Free vs delete() in C++ goto statement in C and C++ C++ program to read string using cin.getline() C++ String Concatenation Heap Sort in C++ Swap numbers in C++ Input Iterators in C++ Fibonacci Series in C++ C ++ Program: Alphabet Triangle and Number Triangle C++ Program: Matrix Multiplication C++ Program to Print Fibonacci Triangle Stack in C++ Maps in C++ Queue in C++ C++ Bitset C++ Algorithms Priority Queue in C++ C++ Multimap C++ Deque Function Pointer in C++ Sizeof() Operators in C++ C++ array of Pointers free() Vs delete in C Timsort Implementation Using C++ CPP Templates C++ Aggregation C++ Enumeration C++ Math Functions C++ Object Class C++ Queue Initialize Vector in C++ Vector in C++ C++ STL Components Function overloading in C++ C++ Maximum Index Problem C++ find missing in the second array C++ Program to find the product array puzzle C++ Program To Find Largest Subarray With 0 Sum C++ Program To Move All Zeros To The End Of The Array C++ Program to find the element that occurs once C++ Program to find the largest number formed from an array Constructor Vs Destructor C++ Namespaces C++ OOPs Concept C++ Static C++ Structs C++ Try-Catch C++ User Defined Exceptions C++ Virtual Destructor C++ vs C# Malloc() and new in C++ Palindrome Number Program in C++ Snake Code in C++ Splitting a string in C++ Structure Vs Class in C++ Virtual Function Vs Pure Virtual Function C++ Bidirectional Iterators C++ Forward Iterators C++ Iterators C++ Output Iterators C++ Range-based For Loop Converting string into integer in C++ LCM Program in C++ Type conversion in C++ Add two numbers using the function in C++ Advantage and disadvantage friend function C++ Armstrong Number Program in C++ ATM machine program in C++ using functions Binary to Decimal in C++ Bit Manipulation in C++ C++ Constructor C++ Dijkstra Algorithm Using the Priority Queue C++ int into String C++ Signal Handling Decimal to Binary in C++ Decimal to Hexadecimal in C++ Decimal to Octal in C++ Factorial Program in C++ Function in C++ Hexadecimal to Decimal in C++ Octal to Decimal in C++ Reverse a Number in C++ Structure Vs Class in C++ C++ Forward Iterators C++ Output Iterators C++ Prime number program Char Array to String in C++ Constructor Overloading in C++ Default arguments in C++ Different Ways to Compare Strings in C++ Dynamic Binding in C++ Program to convert infix to postfix expression in C++ SET Data Structure in C++ Upcasting and Downcasting in C++ Reverse an Array in C++ Fast Input and Output in C++ Delete Operator in C++ Copy elision in C++ C++ Date and Time C++ Bitwise XOR Operator Array of sets in C++ Binary Operator Overloading in C++ Binary Search in C++ Implementing the sets without C++ STL containers Scope Resolution Operator in C++ Smart pointers in C++ Types of polymorphism in C++

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



ADVERTISEMENT
ADVERTISEMENT