Översikt
Svep för att visa menyn
Mallfunktioner gör det möjligt för utvecklare att skapa generisk och återanvändbar kod, vilket avsevärt ökar flexibiliteten och underhållbarheten i program. Denna översikt sammanfattar de viktigaste begreppen och avsnitten som behandlas i kursen.
Skapande av mallar
Syntaxen för att skapa en mall inkluderar nyckelordet template följt av mallparametrar inom vinkelparenteser. Nedan visas ett exempel på en grundläggande mallfunktion som inte tar några parametrar.
template.h
12template<typename> void SimpleTemplate() {}
Mallar och parametrar
Mallar kan också ta emot parametrar, vilket gör dem mer mångsidiga. Här visar vi hur man skapar en mallfunktion som tar en enda parameter av en generisk typ T. Detta gör att funktionen kan arbeta med vilken datatyp som helst som anges vid instansiering.
single_parameter.h
multiple_parameters.h
12template<typename T> void SimpleTemplate(T value) {}
Klassmallar
Mallar kan även användas för klasser, vilket möjliggör skapandet av klassdefinitioner som är parameteriserade. Följande exempel visar hur man skapar en klassmall som lagrar ett värde av en generisk typ T och inkluderar en konstruktor för initiering:
class_template.h
1234567template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };
Templatespecialisering
Templatespecialisering möjliggör skapandet av specifika implementationer av en mall för särskilda datatyper. Detta är användbart när en generell implementation inte är tillräcklig eller när särskilt beteende krävs. Följande exempel visar hur man specialiserar en mallfunktion för olika datatyper, inklusive int, bool och 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`
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal