If you want to remember something for life, find the why behind it.

We hear a lot about function overloading. But hardly many know why it is important and what is the use of it.

If you don’t know the practical use, your technical knowledge has zero value.

Function overloading in C++ allows you to define multiple functions with the same name but different parameter lists within the same scope.

This provides flexibility by enabling a function to perform different tasks based on the number or types of its parameters.

Let’s say you have to write a function to find the average of two numbers (says get_average()).

#include <iostream>

double get_average(double num1, double num2) {
return (num1 + num2) / 2.0;
}

int main() {
double average = get_average(34, 56);
std::cout << "Average of two numbers: " << average << std::endl;
return 0;
}

Output:

Average of two numbers: 45

You can write another function with the same name to find the average of the array.

#include <iostream>

// 1st fuction to find the average of two numbers
double get_average(double num1, double num2) {
return (num1 + num2) / 2.0;
}

// 2nd fuction to find the average of array
double get_average(const double arr[], int size) {
double sum = 0.0;
for (int i = 0; i < size; ++i) {
sum += arr[i];
}
return sum / size;
}

int main() {
//Calculate the average of two numbers
double average_num = get_average(34, 56);
std::cout << "Average of two numbers: " << average_num << std::endl;

// Initialize an array with predefined values
const int size = 5;
double numbers[size] = {10.5, 20.5, 30.5, 40.5, 50.5};

// Calculate the average of array of numbers
double average_array = get_average(numbers, size);

std::cout << "Average of array: " << average_array << std::endl;
return 0;
}

Output:

Average of two numbers: 45
Average of array: 30.5

While calling a function if you pass two integers, the first function is called. If you pass an array of numbers to find the average, a second function will be called.

It enhances code readability and makes it more intuitive for developers to use the same function name with similar purposes.

I tried to explain it with very simple examples. If you have any doubts or want to share your thoughts, write in the comment section below.