×

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

C++ First Program

Let's write a simple basic program structure of C++, its compilation and its execution (how it runs). This program is compiled using GCC compiler. Open any editor to write C++ program. #include<iostream>   using namespace std;   int main(){       cout<<"Welcome to C++ program"<<endl;   } Output...

2 minutes read.

Binary Search in C++

The binary search in the C++ programming language will be discussed. By continually halves the array and then seeking specified items from a half array; binary search is a technique...

8 minutes read.

Boost split in C++ library

Boost::split in C++ library Boost offers strong tools for adding mature, well-tested libraries to the C++ standard library. The boost: split function, which is a component of the Boost string algorithm...

2 minutes read.

Array of Object in C++

What is an Array? In C++, an array is a group of related data types, such as int, char, float, double, etc., that are easily accessed by index value alone and...

12 minutes read.

Nullptr in C++

What is Nullptr in C++? A null pointer value is represented by the term nullptr. Use a null pointer value to indicate that a native pointer type, inner pointer, or object...

3 minutes read.

How to Use Getline in C++

What is getline in C++? Similar to the cin function, which allows the programmer to take input from the user getline() function also takes input from the user. But in this...

4 minutes read.

Containership in C++

In C++, it is possible to create an object in one class into another class, and that object is a member of another class. This relationship is known as a...

4 minutes read.

Octal to Decimal in C++

We need to write a system that converts octal number into equal decimal number when octal number is given as input. Let us look at an example of a program in...

2 minutes read.

C++ find missing in the second array

Given two arrays A and B of sizes n and m. Find the elements from array A that are not present in array B. Example Input : a[] = {1, 2, 3, 5,...

3 minutes read.

Decimal to Hexadecimal in C++

We need to write a program in C++ that converts a decimal number into an equal hexadecimal number given a decimal value as input i.e. convert a number having a...

2 minutes read.

C++ Aggregation

C++ Aggregation Definition: In C++, aggregation is a process in which one class (as an entity reference) defines another class. It provides another way to reuse the class. It represents...

4 minutes read.

ATM machine program in C++ using functions

Automated Teller Machines (ATMs) carry out daily financial transactions. They are straightforward and simple, allowing customers to complete self-service transactions quickly. ATMs can then be used to withdraw cash, deposit...

3 minutes read.

Preventing Object Copy in C++

C++ is an object-oriented programming language that provides the ability to create objects, define class and pass objects to functions. When passing an object to a function or returning an...

7 minutes read.

C++ Namespaces

An Overview In each scope, a name can only represent one entity. As a result, there cannot be two independent variables with the similar names in the same scope, as this may cause...

10 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.

C++ Installation

Let's install C++ setup to start programming in C++. C++ setup contains C++ compiler which is required in your system. There are lots of C++ compilers available, you must choose...

1 minute read.

Pointers in C++

Pointers are a powerful feature in the C++ programming language, allowing developers to directly manipulate memory addresses and create more efficient and dynamic programs. However, pointers can also source various...

3 minutes read.

Pointer to Object in C++

What is a pointer? A pointer in C++ is used to point the variable by storing the address of the variable. In C++, to print the address of the variable, we...

4 minutes read.

Const_cast in C++ Type Casting Operators

In this tutorial, we will learn enough about const cast in the most widely used programming language, C++, as well as type casting operations. C++ supports the four types of casting...

4 minutes read.

C++ Reading file

In file handling, read() function is used to read data from the file into the program. The read() uses ifstream library to read data from a file. Syntax file-stream-class   file-stream-object;   file-stream-object.read((char *)&var , sizeof (var)); <h3">Example ofstream  outfile;         outfile . read((char*)&emp,sizeof(emp)); C++ File Handling read() Function Example Reading the content of existing...

2 minutes read.