Основы программирования на С++ для начинающих

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

Возможно, кого-то из новичков пугает название темы “Перегрузка функций”? Меня пугало. Казалось –  это что-то,  с чем придется долго разбираться.  На самом деле, перегрузку функций  очень легко понять. Сложного нет ничего.

Перегруженные функции – это функции, которые имеют одинаковое имя, но отличаются количеством или типами принимаемых параметров. Либо – и тем и другим.

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

Например, функция должна принять массив  чисел и вернуть в программу сумму его элементов.  Но мы можем передать в функцию массив типа int или типа double. В таком случае можно не давать функциям разные имена. Они ведь по сути  выполняют одну и ту же работу, только  используют данные разных типов.

В следующей программе определены три перегруженные функции с именем  sumElements(). Все они вычисляют сумму элементов массивов. Одна принимает массив типа int и его размер. Вторая принимает массив типа double  и его размер. Третья принимает два массива с типом элементов int и double  и их размер.

Определения перегруженных функций находятся в строках 31 – 61. В них создается переменная для накопления суммы значений элементов массива. В цикле for сумма накапливается.   Далее полученное значение возвращается в программу, на место вызова перегруженной функции.

Обращение ко всем трём функциям производится по одному и тому-же имени – строки 17, 21, 25. Передав в функцию при вызове массив типа int и его размер, компилятор сам автоматически определит, какую из трёх перегруженных функций ему необходимо использовать. Точно так же произойдет и во время вызова остальных функций.

перегрузка функций с++, перегрузка функций c++

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

Как делать не надо:

перегрузка функций с++, перегрузка функций c++

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

Посмотрите короткое видео о перегрузке:

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

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