Oversikt
Sveip for å vise menyen
Maler gjør det mulig for utviklere å lage generisk og gjenbrukbar kode, noe som øker fleksibiliteten og vedlikeholdbarheten til programmer betydelig. Denne oversikten oppsummerer de viktigste konseptene og seksjonene som dekkes i kurset.
Opprettelse av maler
Syntaksen for å opprette en mal inkluderer nøkkelordet template etterfulgt av malparametere omsluttet av vinkelparenteser. Nedenfor vises et eksempel på en grunnleggende malfunksjon som ikke tar noen parametere.
template.h
12template<typename> void SimpleTemplate() {}
Maler og parametere
Maler kan også motta parametere, noe som gjør dem mer allsidige. Her viser vi hvordan man lager en malfunksjon som tar én parameter av en generisk type T. Dette gjør at funksjonen kan brukes med hvilken som helst datatypen som oppgis ved instansiering.
single_parameter.h
multiple_parameters.h
12template<typename T> void SimpleTemplate(T value) {}
Klassemaler
Maler kan også brukes på klasser, slik at man kan lage klassedefinisjoner som er parameteriserte. Eksempelet under viser hvordan man lager en klassemal som lagrer en verdi av en generisk type T og inkluderer en konstruktør for initialisering:
class_template.h
1234567template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };
Templatespesialisering
Templatespesialisering gir mulighet for å lage spesifikke implementasjoner av en mal for bestemte datatyper. Dette er nyttig når en generell implementasjon ikke er tilstrekkelig, eller når spesiell oppførsel er nødvendig. Følgende eksempel viser hvordan man kan spesialisere en malfunksjon for ulike datatyper, inkludert 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`
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår