CPP-101: Функции

Предефиниране (overloading) на функции

В C++ е допустимо в една и съща програма да се използват няколко функции, които имат различни аргументи, но едно и също име. Когато се използва едно и също име за дефиниране на няколко функции се говори за предефиниране на функции.

[note]
В литературата на български език няма единна терминология за обозначаване на това свойство на C++. Други често използвани термини за обозначаване на предефинирането на функции (function overloading) са: функции с много имена, препокриване на функции. Все пак, като че ли най-често се използва предефиниране на функции.
[/note]

Нека разгледаме следната ситуация. Трябва да се дефинира функция, която събира две числа и връща резултата. Тази функция трябва да може да се използва, както с аргументи от типа \lstinline{int}, така и с аргументи от типа double. Да разгледаме следния фрагмент:

int add(int x, int y) {
    return x+y;
}

double add(double x, double y) {
    return x+y;
}

int main() {
    int a=1,b=2;
    double x=1.0,y=2.0;

    int si=add(a,b);
    double sd=add(x,y);
    
    return 0;
}

При използването на функция с име add компилаторът преценява коя точно дефиниция на функцията трябва да използва като търси съвпадение на типовете на действителните аргументи с типовете от дефиницията на функцията. Тъй като в ред 13 функцията add се извиква с цели аргументи, компилаторът ще използва дефиницията от ред 1. В ред 14 ще се използва дефиницията от ред 5, тъй като аргументите са от типа double.

Публикувано в CPP-101, ООП с етикети , , . Постоянна връзка.

Един коментар по CPP-101: Функции

  1. Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране

Коментарите са затворени.