Direkt zum Hauptinhalt springen
eLearner.app
Modul 8 · Lektion 1 von 217/18 im Kurs~12 min
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.

Code
// 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:

Code
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):

Code
int res1 = add(5, 10); // Der Compiler folgert, dass T ein int ist

Probier es aus

Übung#cpp.m8.l1.e1
Versuche: 0Wird geladen…

Definiere eine Template-Funktion namens myMax, die zwei Parameter vom generischen Typ T akzeptiert und den größeren der beiden zurückgibt.

Editor wird geladen…
Hinweis anzeigen

Schreibe zuerst `template <typename T>` gefolgt von der Signatur `T myMax(T a, T b)`.

Lösung nach 3 Versuchen verfügbar

Übung#cpp.m8.l1.e2
Versuche: 0Wird geladen…

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).

Editor wird geladen…
Hinweis anzeigen

Die Template-Deklaration muss zwei Parameter angeben: `template <typename T1, typename T2>`.

Lösung nach 3 Versuchen verfügbar