Przejdź do głównej treści
eLearner.app
Moduł 8 · Lekcja 1 z 217/18 w kursie~12 min
Lekcje modułu (1/2)

Szablony Funkcji

Szablony (templates) umożliwiają pisanie generycznego kodu w C++. Za pomocą szablonów możemy definiować funkcje lub klasy działające na generycznych parametrach typów, pozostawiając kompilatorowi generowanie rzeczywistego kodu dla konkretnych wymaganych typów.

Definiowanie szablonu funkcji

Aby zdefiniować szablon funkcji, poprzedzamy definicję funkcji słowem kluczowym template, po którym następuje lista parametrów typu ujęta w nawiasy ostre <>. Zwykle używa się słowa typename lub class do zadeklarowania typu generycznego.

Code
// T è il parametro di tipo generico
template <typename T>
T add(T a, T b) {
    return a + b;
}

Wywołanie funkcji i dopasowanie przeciążeń (Overload Resolution)

Kiedy wywołujemy funkcję, możemy jawnie określić typ w nawiasach ostrych:

Code
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

Zazwyczaj jednak kompilator C++ jest w stanie automatycznie wydedukować typ na podstawie przekazanych parametrów wejściowych (Template Argument Deduction):

Code
int res1 = add(5, 10); // Kompilator dedukuje, że T to int

Spróbuj sam

Ćwiczenie#cpp.m8.l1.e1
Próby: 0Ładowanie...

Zdefiniuj szablon funkcji o nazwie myMax, która przyjmuje dwa parametry generycznego typu T i zwraca większy z nich.

Ładowanie edytora...
Pokaż wskazówkę

Zacznij od napisania `template <typename T>`, po którym umieścisz sygnaturę `T myMax(T a, T b)`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#cpp.m8.l1.e2
Próby: 0Ładowanie...

Napisz szablon funkcji printPair, która przyjmuje dwa parametry różnych typów generycznych T1 i T2 i wypisuje oba te argumenty na ekranie oddzielone spacją przy użyciu std::cout.

Ładowanie edytora...
Pokaż wskazówkę

Deklaracja szablonu musi określać dwa parametry: `template <typename T1, typename T2>`.

Rozwiązanie dostępne po 3 próbach