Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Oversigt | Templatespecialisering
C++ Templates

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

template.h

12
template<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

single_parameter.h

multiple_parameters.h

multiple_parameters.h

12
template<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

class_template.h

1234567
template<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

specialization.h

1234567891011
template <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`
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5

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

Sektion 4. Kapitel 5
some-alt