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.
// 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:
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):
int res1 = add(5, 10); // Kompilator dedukuje, że T to int
Spróbuj sam
Zdefiniuj szablon funkcji o nazwie myMax, która przyjmuje dwa parametry generycznego typu T i zwraca większy z nich.
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
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.
Pokaż wskazówkę
Deklaracja szablonu musi określać dwa parametry: `template <typename T1, typename T2>`.
Rozwiązanie dostępne po 3 próbach