Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hvordan Bruke Templatespesialisering | Templatespesialisering
C++-Maler
Seksjon 4. Kapittel 2
single

single

Hvordan Bruke Templatespesialisering

Sveip for å vise menyen

Syntaks for templatespesialisering

For å forstå hvordan templatespesialisering fungerer, må vi først forstå hva som skjer i bakgrunnen når en mal kalles med en bestemt datatypen.

Når du kaller en malfunksjon med en spesifikk type, genererer kompilatoren en konkret instans av malen for denne typen. Denne prosessen kalles mal-instansiering. I hovedsak erstatter kompilatoren malparameteren med den angitte typen og oppretter en spesialisert versjon av funksjonen.

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 sjekker den om en erstatning for denne funksjonen allerede eksisterer. Det er ingen grunn til å generere flere instanser av denne funksjonen hvis den kalles med samme type gjentatte ganger. Med denne kunnskapen kan vi bruke det til vårt 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 }
Oppgave

Sveip for å begynne å kode

Lag en templatespesialisering for TemplateFunction som håndterer std::string datatyper.

  • Implementer en spesialisering for TemplateFunction for å behandle std::string-parametere på en annen måte.
  • Sørg for at enhver streng som sendes som parameter får "Specialized: " lagt til i starten av returverdien.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt