Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Überblick | Templatespezialisierung
C++-Templates

Überblick

Swipe um das Menü anzuzeigen

Templates ermöglichen es Entwicklern, generischen und wiederverwendbaren Code zu erstellen, was die Flexibilität und Wartbarkeit von Programmen erheblich verbessert. Diese Übersicht fasst die wichtigsten Konzepte und Abschnitte des Kurses zusammen.

Erstellung von Templates

Die Syntax zur Erstellung eines Templates umfasst das Schlüsselwort template, gefolgt von Template-Parametern in spitzen Klammern. Nachfolgend ein Beispiel für eine grundlegende Template-Funktion, die keine Parameter entgegennimmt.

template.h

template.h

12
template<typename> void SimpleTemplate() {}

Templates und Parameter

Templates können auch Parameter akzeptieren, was ihre Vielseitigkeit erhöht. Hier wird gezeigt, wie eine Template-Funktion erstellt wird, die einen einzelnen Parameter eines generischen Typs T entgegennimmt. Dadurch kann die Funktion mit jedem Datentyp arbeiten, der bei der Instanziierung angegeben wird.

single_parameter.h

single_parameter.h

multiple_parameters.h

multiple_parameters.h

12
template<typename T> void SimpleTemplate(T value) {}

Klassentemplates

Templates können auch auf Klassen angewendet werden, wodurch die Erstellung von parametrisierten Klassendefinitionen ermöglicht wird. Das folgende Beispiel zeigt, wie ein Klassentemplate erstellt wird, das einen Wert eines generischen Typs T speichert und einen Konstruktor zur Initialisierung enthält:

class_template.h

class_template.h

1234567
template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };

Templatespezialisierung

Die Templatespezialisierung ermöglicht die Erstellung spezifischer Implementierungen einer Vorlage für bestimmte Datentypen. Dies ist nützlich, wenn eine generische Implementierung nicht ausreicht oder spezielles Verhalten erforderlich ist. Das folgende Beispiel zeigt, wie eine Template-Funktion für verschiedene Datentypen, einschließlich int, bool und std::string, spezialisiert werden kann:

specialization.h

specialization.h

1234567891011
template <typename T> void Template(const T& value) { /* ... */ } // Any Type template <> void Template<int>(const T& value) { /* ... */ } // For `int` template <> void Template<bool>(const T& value) { /* ... */ } // For `bool` template <> void Template<std::string>(const T& value) { /* ... */ } // For `std::string`
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 4. Kapitel 5
some-alt