007
03.06.2005, 09:28 Uhr
Th
|
Hi Nimbo,
wenn du schon 2 Jahre C++ programmierst, dann hast du doch sicherlich schon von der STL gehört bzw. sie benutzt, also z.B. vector, list, map, ... Dies sind Containerklassen, d.h. ihre Elemente können von beliebigen Typen sein, d.h. bei der Benutzung (Instantiierung) mußt du den konkreten Typ angeben, z.B. vector<string> oder map<int, X> wobei X eine eigene Klasse ist.
string z.B. ist selber ein template: basic_string<char, ...> d.h. die Elemente dieser Klasse sind chars. (wstring ist dann als basic_string<wchar, ...> definiert).
Ein anderer Anwendungsfall für Templates sind Funktionen bzw. Memberfunktionen, z.B.
C++: |
template<typename T> const T& max(const T& a, const T& b) { return a>b? a : b; }
|
Anstatt jetzt eine Maximumfunktion für jeden Typ zu schreiben, generiert der Compiler sie für dich, wenn du z.B. max(1, 4) schreibst. |