Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Hoe Templatespecialisatie te Gebruiken | Templatespecialisatie
C++-Templates
Sectie 4. Hoofdstuk 2
single

single

Hoe Templatespecialisatie te Gebruiken

Veeg om het menu te tonen

Syntaxis van templatespecialisatie

Om te begrijpen hoe templatespecialisatie werkt, moeten we eerst inzicht krijgen in wat er onder de motorkap gebeurt wanneer een template wordt aangeroepen met een specifiek gegevenstype.

Wanneer je een templatefunctie aanroept met een bepaald type, genereert de compiler een concrete instantie van de template voor dat type. Dit proces heet template-instantiering. In feite vervangt de compiler de templateparameter door het opgegeven type en maakt een gespecialiseerde versie van de functie.

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

Maar eerst controleert de compiler of er al een substitutie voor deze functie bestaat. Het heeft geen zin om meerdere instanties van deze functie te genereren als deze herhaaldelijk met hetzelfde type wordt aangeroepen. Met deze kennis kunnen we het voor onze doeleinden gebruiken.

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

Veeg om te beginnen met coderen

Maak een templatespecialisatie voor de TemplateFunction die std::string-datatypen verwerkt.

  • Implementeer een specialisatie voor TemplateFunction om std::string-parameters op een andere manier te verwerken.
  • Zorg ervoor dat elke string die als parameter wordt doorgegeven, wordt teruggegeven met "Specialized: " aan het begin van de waarde.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt