Перегрузка функций C ++ (с примерами)

В этом руководстве мы узнаем о перегрузке функций в C ++ на примерах.

В C ++ две функции могут иметь одинаковое имя, если количество и / или тип переданных аргументов различаются.

Эти функции, имеющие одинаковое имя, но разные аргументы, известны как перегруженные функции. Например:

 // same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )

Здесь все 4 функции являются перегруженными.

Обратите внимание, что возвращаемые типы всех этих 4 функций не совпадают. Перегруженные функции могут иметь или не иметь разные возвращаемые типы, но они должны иметь разные аргументы. Например,

 // Error code int test(int a) ( ) double test(int b)( )

Здесь обе функции имеют одинаковое имя, один и тот же тип и одинаковое количество аргументов. Следовательно, компилятор выдаст ошибку.

Перегрузка функций с использованием различных типов параметров

 // Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )

Вывод

 Абсолютное значение -5 = 5 Абсолютное значение 5,5 = 5,5
Работа перегрузки для функции absolute ()

В этой программе мы перегружаем absolute()функцию. В зависимости от типа параметра, переданного во время вызова функции, вызывается соответствующая функция.

Перегрузка функций с использованием разного количества параметров

 #include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )

Вывод

 Целое число: 5 Число с плавающей запятой: 5.5 Целое число: 5 и двойное число: 5.5

Здесь display()функция вызывается трижды с разными аргументами. В зависимости от количества и типа переданных аргументов display()вызывается соответствующая функция.

Работа перегрузки для функции display ()

Тип возвращаемого значения всех этих функций одинаков, но это не обязательно в случае перегрузки функции.

Примечание. В C ++ многие стандартные библиотечные функции перегружены. Например, sqrt()функция может принимать double, float, и int,т.д. в качестве параметров. Это возможно, потому что sqrt()функция перегружена в C ++.

Интересные статьи...