C++/Function overload

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Перегрузка функций (англ. Function overload) — возможность использования одноимённых функций (подпрограмм, процедур) в языке программирования C++.

Пример

Создание функции makeAction принимающей переменную arg типа int и её перегрузки, принимающей переменную arg типа float:

void makeAction(int arg) {…}
bool makeAction(float arg) {…}

Особенности

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

Условия

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

Как можно перегружать функции:

  1. по количеству аргументов
  2. по типу переменных

Как нельзя перегружать функции:

  1. с использованием модификатора const
  2. с использованием управляющих символов для ссылок и указателей.

Все перегружаемые функции должны быть в одной области видимости.

На один набор параметров должна быть только одна перегрузка. Если есть 2 и более перегруженных функций удовлетворяющих условиям вызова, то будет ошибка так как всегда должна быть только одна удовлетворяющая функция. Это может быть при использовании параметров по-умолчанию, которые необязательно передавать в функцию при вызове.

В спорных случаях, когда существует две перегрузки функции, одна, например, принимает тип float, другая double, а передается тип int, надо явно указывать какой тип используется так: f((double)8); — явное приведение типов, или так f(float(8)); — создание переменной без названия.

Шаблон:Programming language