Перегрузка функций в C++: примеры и решение проблем

Перегрузка функций в C++ позволяет создавать несколько функций с одним именем, но с разными параметрами (тип или количество). Это повышает читаемость и удобство использования кода.

Базовая программа

Рассмотрим функцию Print, выводящую переданный параметр на экран:

void Print(std::string text) {
  std::cout << text << std::endl;
}

Вызов Print("Пример"); выведет «Пример».

Проблема несовпадения типов

Функция AddAndPrint складывает два целых числа и пытается вывести результат:

void AddAndPrint(int a, int b) {
  int sum = a + b;
  Print(sum);
}

Возникает ошибка несовпадения типов, так как Print ожидает строку (std::string), а sum — целое число (int).

Решение с помощью перегрузки

Перегрузка функций решает эту проблему. Создадим две функции Print:

void Print(std::string text) {
  std::cout << text << std::endl;
}

void Print(int num) {
  std::cout << num << std::endl;
}

Компилятор выберет нужную функцию Print в зависимости от типа аргумента.

Перегрузка с разным количеством параметров

Перегрузка также работает с разным количеством параметров:

void AddAndPrint(int a, int b) {
  int sum = a + b;
  Print(sum);
}

void AddAndPrint(int a, int b, int c) {
  int sum = a + b + c;
  Print(sum);
}

Компилятор выберет версию AddAndPrint в зависимости от количества аргументов.

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

Что будем искать? Например,программа