Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära How to Use Templatespecialisering | Templatespecialisering
C++-Mallar
Avsnitt 4. Kapitel 2
single

single

How to Use Templatespecialisering

Svep för att visa menyn

Syntax för templatespecialisering

För att förstå hur templatespecialisering fungerar behöver vi först förstå vad som händer bakom kulisserna när en mall anropas med en specifik datatyp.

När du anropar en mallfunktion med en viss typ genererar kompilatorn en konkret instans av mallen för den typen. Denna process kallas mallinstansiering. I princip ersätter kompilatorn mallparametern med den angivna typen och skapar en specialiserad version av funktionen.

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); }

Men först kontrollerar den om en ersättning för denna funktion redan finns. Det finns ingen anledning att generera flera instanser av denna funktion om den anropas med samma typ upprepade gånger. Med denna kunskap kan vi använda det för våra syften.

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 }
Uppgift

Svep för att börja koda

Skapa en templatespecialisering för TemplateFunction som hanterar datatyper av typen std::string.

  • Implementera en specialisering för TemplateFunction för att bearbeta std::string-parametrar på ett annorlunda sätt.
  • Säkerställ att varje sträng som skickas som parameter får "Specialized: " tillagt i början av det returnerade värdet.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt