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

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

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

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

Например, предположим, что в нашей программе есть функция с именем 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);

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

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

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

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Локальные и глобальные переменные в С++.

Локальные и глобальные переменные в С++.

Каждая переменная имеет свою область видимости, то есть такую область, в которой можно работать с переменной. За пределами этой области, о данной переменной ничего известно

 
Математические функции в С++

Математические функции в С++

В языке С++ математические функции определены в заголовочном файле <cmath> функции выполняющие некоторые часто используемые математические задачи. Например, нахождение корня, возведение в степень, sin(), cos()

 
Работа с файлами в С++.

Работа с файлами в С++.

Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Файл имеет уникальное имя, например файл.txt. Для работы с файлами в С++ необходимо

 
Структуры в C++.

Структуры в C++.

Структура – это совокупность переменных, объединенных одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры.

 

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

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