Oversigt
Stryg for at vise menuen
Templates giver udviklere mulighed for at skabe generisk og genanvendelig kode, hvilket væsentligt øger programmets fleksibilitet og vedligeholdelsesvenlighed. Dette overblik opsummerer de vigtigste begreber og sektioner, der dækkes i kurset.
Oprettelse af templates
Syntaksen for at oprette en template inkluderer nøgleordet template efterfulgt af template-parametre omsluttet af vinkelparenteser. Nedenfor ses et eksempel på en grundlæggende template-funktion, der ikke tager nogen parametre.
template.h
12template<typename> void SimpleTemplate() {}
Skabeloner og parametre
Skabeloner kan også acceptere parametre, hvilket gør dem mere alsidige. Her vises, hvordan man opretter en skabelonfunktion, der tager en enkelt parameter af en generisk type T. Dette gør det muligt for funktionen at arbejde med enhver datatype, der angives under instantiering.
single_parameter.h
multiple_parameters.h
12template<typename T> void SimpleTemplate(T value) {}
Klasseskabeloner
Skabeloner kan også anvendes på klasser, hvilket muliggør oprettelse af klassedefinitioner, der er parameteriserede. Følgende eksempel illustrerer, hvordan man opretter en klasseskabelon, der gemmer en værdi af en generisk type T og inkluderer en konstruktør til initialisering:
class_template.h
1234567template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };
Templatespecialisering
Templatespecialisering muliggør oprettelse af specifikke implementeringer af en template for bestemte datatyper. Dette er nyttigt, når en generisk implementering ikke er tilstrækkelig, eller når der kræves særlig opførsel. Følgende eksempel viser, hvordan man specialiserer en templatefunktion for forskellige datatyper, herunder int, bool og std::string:
specialization.h
1234567891011template <typename T> void Template(const T& value) { /* ... */ } // Any Type template <> void Template<int>(const T& value) { /* ... */ } // For `int` template <> void Template<bool>(const T& value) { /* ... */ } // For `bool` template <> void Template<std::string>(const T& value) { /* ... */ } // For `std::string`
Tak for dine kommentarer!
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