Перевантаження функції
Перевантаження функції, перевантаження процедури або ж перевантаження методу (англ. function overloading or method overloading) — в програмуванні один із засобів реалізації поліморфізму (ad hoc поліморфізм), що полягає в можливості створювати кілька реалізацій функції (методу) із тим же ім'ям проте з різною сигнатурою — з різною кількістю параметрів або з різним типом параметрів[1]. Дана можливість з'явилась ще в процедурних мовах програмування, з появою ж об'єктно-орієнтованого підходу можливість поширилась на методи (функції-члени) одного і того ж класу, зокрема і на конструктори класу.
Для прикладу, 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);}
В вище наведеному прикладі, об'єм підрахований методами з різним набором аргументів, буде вибирати функцію для підрахунку об'єму відповідної фігури.
Див. також
ред.Джерела
ред.- ↑ Overloading. Definition. Архів оригіналу за 16 січня 2013. Процитовано 28 грудня 2012.