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.
// 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:
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):
int res1 = add(5, 10); // The compiler deduces that T is intProbeer het zelf
Definieer een functiesjabloon met de naam myMax, die twee parameters van het algemene type T nodig heeft en de grootste van de twee retourneert.
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
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.
Toon hint
De sjabloondeclaratie moet twee parameters specificeren: `sjabloon <typenaam T1, typenaam T2>`.
Oplossing beschikbaar na 3 pogingen