Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hvordan man bruger templatespecialisering | Templatespecialisering
C++ Templates
Sektion 4. Kapitel 2
single

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

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

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

Swipe to start coding

Opret en templatespecialisering for TemplateFunction, der håndterer std::string datatyper.

  • Implementer en specialisering for TemplateFunction til at behandle std::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

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt