single
Hvordan man bruger templatespecialisering
Stryg for at vise menuen
Syntaks for templatespecialisering
For at forstå, hvordan templatespecialisering fungerer, skal vi først forstå, hvad der sker bag kulisserne, når en template kaldes med en bestemt datatype.
Når du kalder en templatefunktion med en bestemt type, genererer compileren en konkret instans af templaten for denne type. Denne proces kaldes templateinstansiering. Grundlæggende erstatter compileren templateparameteren med den angivne type og opretter en specialiseret version af 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 tjekker compileren, om der allerede findes en substitution for denne funktion. Det giver ikke mening at generere flere instanser af denne funktion, hvis den kaldes med samme type gentagne gange. Med denne viden kan vi bruge det til vores formål.
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 }
Swipe to start coding
Opret en templatespecialisering for TemplateFunction, der håndterer std::string datatyper.
- Implementer en specialisering for
TemplateFunctiontil at behandlestd::string-parametre anderledes. - Sørg for, at enhver streng, der sendes som parameter, får tilføjet
"Specialized: "i begyndelsen af den returnerede værdi.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat