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
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
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 }
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
TemplateFunctionför att bearbetastd::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
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal