6. Funkcje

6.5. Funkcje przeciążone (ang. overloading).

Przeciążanie funkcji (ang. function overloading) w C++ to technika programistyczna, która pozwala na definiowanie wielu funkcji o tej samej nazwie, ale różnych zestawach parametrów. Dzięki temu można zrealizować różne operacje na danych, używając tej samej nazwy funkcji, co zwiększa czytelność kodu oraz pozwala na lepszą organizację.

Poniżej znajduje się przykład przeciążania funkcji w C++:

#include <iostream>

// Funkcja do dodawania dwóch liczb całkowitych
int dodaj(int a, int b) {
    return a + b;
}

// Funkcja do dodawania dwóch liczb zmiennoprzecinkowych
double dodaj(double a, double b) {
    return a + b;
}

// Funkcja do dodawania trzech liczb całkowitych
int dodaj(int a, int b, int c) {
    return a + b + c;
}

int main() {
    int x = 5, y = 10, z = 15;
    double a = 5.5, b = 10.5;

    std::cout << "Dodawanie liczb całkowitych: " << dodaj(x, y) << std::endl; // Wywołuje dodaj(int, int)
    std::cout << "Dodawanie liczb zmiennoprzecinkowych: " << dodaj(a, b) << std::endl; // Wywołuje dodaj(double, double)
    std::cout << "Dodawanie trzech liczb całkowitych: " << dodaj(x, y, z) << std::endl; // Wywołuje dodaj(int, int, int)

    return 0;
}
Kompilator nie będzie w stanie wybrać odpowiedniej wersji funkcji, jeśli wywołanie będzie niejednoznaczne. Na przykład, jeśli przekazane argumenty mogą pasować do więcej niż jednej wersji funkcji, wystąpi błąd kompilacji. Ponadto typ zwracany funkcji nie może być użyty jako jedyna różnica przy przeciążaniu. Oznacza to, że dwie funkcje mogą mieć ten sam zestaw parametrów, ale muszą różnić się przynajmniej jednym parametrem.