C++-Programmierung: Template-Klassen
Alte Seite
Diese Seite gehört zum alten Teil des Buches und wird nicht mehr gewartet. Die Inhalte sollen in das neue Buch einfließen: C++-Programmierung/ Inhaltsverzeichnis.
Eine aktuelle Seite zum gleichen Thema ist unter C++-Programmierung/ Im Zusammenhang mit Klassen verfügbar.
Eine aktuelle Seite zum gleichen Thema ist unter C++-Programmierung/ Im Zusammenhang mit Klassen verfügbar.
Template-Klassen bieten, analog zu Template-Funktionen, die Möglichkeit, Klassen mit unterschiedlichen Datentypen zu verwenden. Templates werden vor allem bei Container-Klassen verwendet. Dies sind Klassen, die Instanzen anderer Klassen aufnehmen, z.B. Listen, Stacks, Queues.
Als Beispiel soll ein (ziemlich sinnfreies) Template-Array dienen:
template <typename T, int Groesse>
class Array
{
private:
T objekte[Groesse];
public:
Array();
T &getObjekt(int Index);
void setObjekt(const T &Objekt, int Index);
};
Die Funktion getObjekt()
ließe sich z.B. so implementieren:
template <typename T, int Groesse>
T &Array<T, Groesse>::getObjekt(int Index)
{
return objekte[Index];
}
Eine Instanz der Klasse Array, mit konkretem Datentyp int
und Größe 10, erstellen Sie wie folgt:
Array<int,10> meinArray;
Überladen von Funktionen
BearbeitenAuch bei Template-Klassen können einzelne Funktionen überladen werden. Dazu wird die Funktion einfach noch einmal implementiert, jedoch steht dann anstelle des formalen Datentyps der gewünschte konkrete Datentyp:
template <int>
int &Array<int>::getObjekt(int Index)
{
// andere Implementierung;
}