Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen How to Use Template Specialization | Templatespezialisierung
C++-Templates
Abschnitt 4. Kapitel 2
single

single

How to Use Template Specialization

Swipe um das Menü anzuzeigen

Syntax von Template-Spezialisierung

Um zu verstehen, wie Template-Spezialisierung funktioniert, müssen wir zunächst nachvollziehen, was im Hintergrund passiert, wenn ein Template mit einem bestimmten Datentyp aufgerufen wird.

Wenn eine Template-Funktion mit einem bestimmten Typ aufgerufen wird, erzeugt der Compiler eine konkrete Instanz des Templates für diesen Typ. Dieser Vorgang wird als Template-Instantzierung bezeichnet. Im Wesentlichen ersetzt der Compiler den Template-Parameter durch den angegebenen Typ und erstellt eine spezialisierte Version der Funktion.

main.cpp

main.cpp

12345678910111213141516
#include <iostream> template<typename T> T TemplateFunction(T value) { return value; } // You can imagine the generated function to look something like this // template<> // int TemplateFunction<int>(int value) { return value; } int main() { // When the compiler encounters this line // It generates a function for the specified type // VVV TemplateFunction<int>(5); }

Zunächst prüft der Compiler jedoch, ob bereits eine Ersetzung für diese Funktion existiert. Es ist nicht sinnvoll, mehrere Instanzen dieser Funktion zu erzeugen, wenn sie wiederholt mit demselben Typ aufgerufen wird. Mit diesem Wissen können wir dies für unsere Zwecke nutzen.

main.cpp

main.cpp

123456789101112131415161718192021
#include <iostream> // Primary template template<typename T> T TemplateFunction(T value) { std::cout << "Generic template\n"; return value; } // Template specialization for int template<> int TemplateFunction<int>(int value) { std::cout << "Specialized template for int\n"; return value * 2; // custom behavior } int main() { TemplateFunction<double>(3.14); // uses generic template TemplateFunction<int>(5); // uses specialized version }
Aufgabe

Wischen, um mit dem Codieren zu beginnen

Erstellen einer Templatespezialisierung für die TemplateFunction, die den Datentyp std::string verarbeitet.

  • Implementierung einer Spezialisierung für TemplateFunction, um std::string-Parameter anders zu behandeln.
  • Sicherstellen, dass jedem als Parameter übergebenen String am Anfang des Rückgabewerts "Specialized: " vorangestellt wird.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

some-alt