Перегрузка функций в С++.

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

КОГДА НЕОБХОДИМА ПЕРЕГРУЗКА?

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

Например, предположим, что в нашей программе есть функция с именем day_of_week, которая возвращает текущий день недели (0 для воскресенья, 1 для понедельника, …, 6 для субботы). Программа могла бы перегрузить эту функцию таким образом, чтобы она верно возвращала день недели, если ей передан юлианский день в качестве параметра, или если ей переданы день, месяц и год:

int day_of_week(int julian_day)

{
// Операторы
}

int day_of_week(int month, int day, int year)

{
// Операторы
}

Перегрузка функции имеет место быть потому что компьютер сравнивает типы и число параметров, и в случае если находит соответствие имени функции и сравниваемых параметров — вызывает такую функцию. В этом суть перегрузки функции.

Для примера, создадим простую функцию max, которая будет определять максимальное из двух целых чисел.

/* Функция max для целых чисел */
int max(int num1, int num2)
{
    if (num1 > num2)
        return num1;
    return num2;
}

В эту функцию можно передавать только целочисленные параметры. Для того, чтобы сделать аналог этой функции для чисел с плавающей запятой, нужно выполнить перегрузку этой функции:

/* Функция max для чисел с плавающей запятой */
double max(double num1, double num2)
{
    if (num1 > num2)
        return num1;
    return num2;
}

Теперь, когда нужно будет вызвать функцию max с целыми параметрами, то вызовется первая функция. А если с дробными — то вторая. Например:

// Здесь будет использоваться первый вариант функции max
int imax = max(1, 10);
// А здесь - второй
double dmax = max(1.0, 20.0);

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: