Основи програмування на С ++ для початківців

Перезавантаження функцій C++

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

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

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

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

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

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

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

перевантаження функцій з ++, перевантаження функцій c ++

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

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

перевантаження функцій з ++, перевантаження функцій c ++

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

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

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *