Die C ++ Template Library

Die Standard-C ++ Bibliothek bietet einen vollständigen Satz von Mathe, Zeit, Eingabe / Ausgabe und DOS-Operationen, um nur einige zu nennen. Viele der frühen Programme, die Sie als Anfänger lernen verwenden, um die so genannte Funktionen Zeichenfolge in der Datei enthalten definiert Streicher.

Die Argumenttypen für viele dieser Funktionen festgelegt sind. Beispielsweise können sowohl Argumente strcpy (char *, char *) ein Zeiger auf einen nullterminierten Zeichenfolge muss sein - sonst nichts Sinn macht.

Es gibt Funktionen, die mehreren Typen anwendbar sind. Nehmen wir das Beispiel der Geringen maximal() Funktion, die das Maximum von zwei Argumente zurückgibt. Alle folgenden Variationen machen Sinn:

int max (int n1, n2 int) - // Rückkehr max von zwei integersunsigned maximal (unsigned u1, unsigned u2) -double maximal (Doppel d1, Doppel d2) -char Maximum (char c1, c2 char) -

Hier würden Sie gerne zu implementieren maximal() für alle vier Fälle.

Natürlich könnten Sie überlasten maximal() mit allen möglichen Varianten:

Doppelmaximum (Doppel d1, Doppel d2) {return (d1> d2)? d1: d2} int Maximum (int n1, n2 int) {return (n1> n2)? n1: n2} char Maximum (char c1, c2 char) {return (c1> c2)? c1: c2 -} // ... wiederholen Sie für alle anderen numerischen Typen ...

Dieser Ansatz funktioniert. Jetzt C ++ wählt die beste Übereinstimmung, Maximum (int, int), für eine Referenz, wie beispielsweise max (1, 2). Jedoch für jede Art von Variable, die die gleiche Funktion zu schaffen, ist eine grobe Zeitverschwendung.

Der Quellcode für alle Maximum (T, T) Funktionen folgt dem gleichen Muster, in dem T ist eine der numerischen Typen. Es wäre so bequem sein, wenn Sie die Funktion einmal schreiben könnte, und lassen Sie C ++ liefern den Typ T wie erforderlich, wenn die Funktion verwendet. In der Tat lässt C ++ Sie tun genau dies. Sie heißen Template-Definitionen.

Menü