Lektionen des Moduls (1/2)
Funktions-Templates
Templates (Vorlagen) ermöglichen es, generischen Code in C++ zu schreiben. Mithilfe von Templates können wir Funktionen oder Klassen definieren, die auf generischen Typparametern arbeiten, sodass der Compiler den eigentlichen Code für die jeweils angeforderten spezifischen Typen generiert.
Definition einer Template-Funktion
Um eine Template-Funktion zu definieren, stellen wir der Funktionsdefinition das Schlüsselwort template voran, gefolgt von einer Liste der Typparameter in spitzen Klammern <>. Zur Deklaration eines generischen Typs wird üblicherweise typename oder class verwendet.
// T è il parametro di tipo generico
template <typename T>
T add(T a, T b) {
return a + b;
}
Funktionsaufruf und Überladungsauflösung (Overload Resolution)
Wenn wir die Funktion aufrufen, können wir den Typ explizit in spitzen Klammern angeben:
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);
Der C++-Compiler ist jedoch in der Regel in der Lage, den Typ automatisch aus den übergebenen Argumenten zu folgern (Template Argument Deduction):
int res1 = add(5, 10); // Der Compiler folgert, dass T ein int ist
Probier es aus
Definiere eine Template-Funktion namens myMax, die zwei Parameter vom generischen Typ T akzeptiert und den größeren der beiden zurückgibt.
Hinweis anzeigen
Schreibe zuerst `template <typename T>` gefolgt von der Signatur `T myMax(T a, T b)`.
Lösung nach 3 Versuchen verfügbar
Schreibe eine Template-Funktion printPair, die zwei Parameter unterschiedlicher generischer Typen T1 und T2 akzeptiert und die beiden Argumente durch ein Leerzeichen getrennt auf dem Bildschirm ausgibt (unter Verwendung von std::cout).
Hinweis anzeigen
Die Template-Deklaration muss zwei Parameter angeben: `template <typename T1, typename T2>`.
Lösung nach 3 Versuchen verfügbar