Перевантаження функції, перевантаження процедури або ж перевантаження методу () — в програмуванні один із засобів реалізації поліморфізму (ad hoc поліморфізм), що полягає в можливості створювати кілька реалізацій функції (методу) із тим же ім'ям проте з різною сигнатурою — з різною кількістю параметрів або з різним типом параметрів. Дана можливість з'явилась ще в процедурних мовах програмування, з появою ж об'єктно-орієнтованого підходу можливість поширилась на методи (функції-члени) одного і того ж класу, зокрема і на конструктори класу.

Для прикладу, doTask() та doTask(object O) — це два різні перевантажені методи. Перший метод не має параметрів, а другий має ту ж назву, проте може приймати як параметр певний об'єкт.

Правила перевантаження функцій Перевантажені функції мають мати різну кількість параметрів або типи даних. Мати однакове ім'я функції, яке буде використовуватись для виклику всіх її варіантів.

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

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

Приклад: перевантаження функцій у c++ #include <iostream>

// Об'єм куба int volume(int s) { return s*s*s; }

// Об'єм циліндра double volume(double r, int h) { return 3.14*r*r*static_cast<double>(h); }

// Об'єм кубоїда long volume(long l, int b, int h) { return l*b*h; }

int main() { std::cout << volume(10); std::cout << volume(2.5, 8); std::cout << volume(100, 75, 15); }

В вище наведеному прикладі, об'єм підрахований методами з різним набором аргументів, буде вибирати функцію для підрахунку об'єму відповідної фігури.

Див. також Перевантаження операторів Заміщення методу

Джерела