PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was sind C++ Templates?


TheGamer
2003-07-23, 18:13:05
Hallo,

was sind Templates zu was sind die gut?

TheGamer

Xmas
2003-07-23, 19:53:28
Templates sind Vorlagen bzw. Bauvorschriften für Klassen und Funktionen.

Der offensichtlichste Grund, Templates zu benutzen ist wenn man einen bestimmten Algorithmus mit verschiedenen Datentypen realisieren will.
Beispielsweise wenn man eine Berechnungsfunktion mit zwei verschiedenen Präzisionen, float und double, zur Auswahl haben will. Normalerweise würde man den Code einmal schreiben, kopieren und in der Kopie überall "float" mit "double" ersetzen.

Templates vereinfachen das jedoch wesentlich. Man schreibt den Code einfach für einen generischen Typ, der lediglich genau die Eigenschaften mitbringen muss, die im Code auch benutzt werden. Wenn man also Variablen dieses Typs addiert, muss auch der Additionsoperator dafür definiert sein.

Ein simples Beispiel:

template<class T>
T quadrat(T t) { return t * t; }

Damit hast du eine Quadratfunktion für jeden beliebigen Typ, der den binären Operator * definiert hat.

Insbesondere bei Containerobjekten machen Templates Sinn. Ein STL-vector z.B. kann als dynamisches Array für jeden beliebigen Typ verwendet werden.

Und es gibt noch eine Menge Tricks, wie man mit Templates einiges an Performance rausholen kann.

TheGamer
2003-07-23, 20:09:49
Ok ich denke ich habs verstanden. Danke.

Erzähl mal von den Performancegewinnen die damit möglich sind.



TheGamer

stabilo_boss13
2003-07-23, 20:13:16
Falls du deine Kenntnisse vertiefen willst, gibt es hier ein paar echt gute Tutorials zu Templates:
http://www.c-plusplus.de/stl.htm