Difference between Function Overloading and Function Overriding in C++

In C++, function overloading and function overriding provides a way to achieve Polymorphism concept ( ability to take multiple forms) which is one of the OOP’s feature.

Function overloading vs Function overriding

The main difference is, Function Overloading enables us to define multiple functions with a similar name within the same class, whereas Function overriding allows us to redefine a method having same name and signature in inheriting class.

Difference between Function Overloading and Function Overriding in Tabular form :

BasisFUNCTION OVERLOADINGFUNCTION OVERRIDING
DefinitionIt allows us to declare two or more function having same name with different number of parameters or different datatypes of argumentIt allows us to declare a function in parent class and child class with same name and signature
Inheritance ConceptIt can occur without inheritance conceptOverriding can only be done when one class is inherited by other class
SignatureThe overloaded functions must have different signature, for example, either the number of parameters or sort of parameters should be differentFunction signatures must have same
Polymorphism TypeIt is an example of compile-time PolymorphismIt is an example of run-time Polymorphism
ScopeThe overloaded functions are always in the same scopeFunctions are always in a different scope
PurposeOverloading is utilized to have the same names of various functions which act distinctively relying on parameters handed over to themOverriding is required when a determined class function needs to perform some additional or unexpected job in comparison to the base class function
AccomplishOverloading is accomplished at compile timeOverriding is accomplished at runtime
ConstructorA constructor can be overloadedA constructor cannot be overridden
UsageA function can be overloaded any number of timesA function can be overridden only single time in the respective inheriting class

Function Overloading

Function overloading is a form of static polymorphism where at least two functions can have a similar name with different arguments and can be considered as an instance of polymorphism.

In other words, functions with a similar name but having a different number of parameters or types of arguments are said to function overloading.

Function overolading

A compiler calls correct function out of others on the basis of their number of parameters or datatypes in arguments.

However, changing only the return type of the function and keeping parameters and other aspects the same would make compiler confuse in choosing the correct function.

Function Overriding

Function overriding is a form of dynamic polymorphism that enables us to have an equivalent function in child class which is already defined in the parent class.

A child class acquires member variables and member functions of its parent class. When there is a need to override the functionality of the parent’s member function then we use the concept of function overriding.

It resembles making another adaptation of an old method, in the child class.

Function overriding 1

If we talk about C++, a virtual keyword or non-virtual way (without writing the virtual keyword in front of function) in order to achieve function overriding.

C++ program to show Function Overloading :

#include <iostream>
using namespace std;
class Shape{
public:
// area() function to calculate area of square
void area(int side) 
{
  cout<<"Area of square :"<< side*side;
}
// Overloading area() function to calculate area of rectangle
void area(int len, int width)
{
  cout<<"Area of Rectangle :"<< len * width<<"\n";

}

};
int main() {
   Shape obj;
   	cout<<"Example of function overloading \n";
    obj.area(10);  // Calling it to calculate square area
    	cout<<"\n";
    obj.area(5,10);  // Calling it to calculate rectangle area
    return 0;
}

Output:

Area of square :100                                                                                                 
Area of Rectangle :50

Explanation: 

Here in the above example, area function was overloaded, one for calculating square’s area and the second one for calculating the rectangle’s area.

C++ program to show Function Overriding:

#include <iostream>
using namespace std;
// Parent class
class Shape{
public:
void display(){
cout<<" I am base class";	
}

};
// Child Class
class Rectangle: public Shape
{
  public:
void display(){
  cout<<"I am overriding display function of parent class \n";
}
};
int main() {
   Rectangle obj;
   	cout<<"Example of function overriding \n";
    obj.display();
    return 0;
}

Output:

Example of function overriding 
I am overriding display function of parent class

Explanation: 

Here, we overrode the display method, enabling us to define or redefine the body of that function in the child class.

[Related Article: Difference between method overloading and method overriding in Java]

Leave a Reply