Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

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

Страница 18 из 43 · 2026-10-25 · 1 мин чтения

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

Что такое перегрузка

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

int Add(int a, int b) {    return a + b;}double Add(double a, double b) {    return a + b;}

Компилятор выбирает подходящую перегрузку по аргументам вызова.

Чем можно различаться

Перегрузки могут отличаться количеством параметров, типами параметров или их порядком. Нельзя перегрузить функцию только по возвращаемому типу:

int Read();// double Read(); // ошибка: параметры те же

Неоднозначность

Если несколько вариантов одинаково подходят после преобразований типов, вызов будет неоднозначным. Избегай перегрузок, которые требуют от пользователя угадывать, какую версию выберет компилятор.

void Print(long value);void Print(double value);// Print(1); может выбрать целочисленную конверсию согласно правилам разрешения перегрузки

При необходимости укажи тип явно: Print(1L) или Print(1.0).

Перегрузка по const и ссылке

Для классов могут существовать разные методы в зависимости от того, является ли объект константным. Также функции могут принимать T& и const T&, но при проектировании нужно следить за неоднозначностью.

Когда применять

Перегрузка уместна, когда разные варианты выполняют одну концептуальную операцию: например, Print(int) и Print(std::string). Не используй одинаковое имя для действий с разным смыслом.

Итог

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