Direct naar de hoofdinhoud
Module 8 · Les 1 van 217/18 in de cursus~12 min
Modulelessen (1/2)

Functiesjablonen

Sjablonen maken het schrijven van generieke code in C++ mogelijk. Via sjablonen kunnen we functies of klassen definiëren die werken op generieke typeparameters, waardoor de compiler de daadwerkelijke code voor de specifieke gevraagde typen kan genereren.

Een functiesjabloon definiëren

Om een ​​functiesjabloon te definiëren, laten we de functiedefinitie voorafgaan door het trefwoord template, gevolgd door de lijst met typeparameters tussen punthaken <>. Gewoonlijk wordt typename of class gebruikt om een ​​generiek type te declareren.

C++
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
    return a + b;
}

Functieoproep en sjabloonargumentaftrek

Wanneer we de functie aanroepen, kunnen we het type expliciet tussen punthaken specificeren:

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

De C++-compiler kan echter meestal het type automatisch afleiden uit de doorgegeven invoerparameters (Template Argument Deduction):

C++
int res1 = add(5, 10); // The compiler deduces that T is int

Probeer het zelf

Oefening#cpp.m8.l1.e1
Pogingen: 0Laden…

Definieer een functiesjabloon met de naam myMax, die twee parameters van het algemene type T nodig heeft en de grootste van de twee retourneert.

Editor laden…
Toon hint

Begin met het schrijven van `template <typenaam T>` gevolgd door de handtekening `T myMax(T a, T b)`.

Oplossing beschikbaar na 3 pogingen

Oefening#cpp.m8.l1.e2
Pogingen: 0Laden…

Schrijf een functiesjabloon met de naam printPair, waaraan twee parameters van verschillende generieke typen T1 en T2 moeten doorgegeven worden en die de twee argumenten, gescheiden door een spatie, afdrukt met behulp van std::cout.

Editor laden…
Toon hint

De sjabloondeclaratie moet twee parameters specificeren: `sjabloon <typenaam T1, typenaam T2>`.

Oplossing beschikbaar na 3 pogingen