Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Overzicht | Templatespecialisatie
C++-Templates

Overzicht

Veeg om het menu te tonen

Templates stellen ontwikkelaars in staat om generieke en herbruikbare code te maken, wat de flexibiliteit en het onderhoud van programma's aanzienlijk verbetert. Dit overzicht vat de belangrijkste concepten en secties samen die in de cursus aan bod komen.

Templatecreatie

De syntaxis voor het maken van een template omvat het sleutelwoord template gevolgd door templateparameters tussen punthaken. Hieronder staat een voorbeeld van een eenvoudige templatefunctie die geen parameters accepteert.

template.h

template.h

12
template<typename> void SimpleTemplate() {}

Templates en Parameters

Templates kunnen ook parameters accepteren, waardoor ze veelzijdiger worden. Hier laten we zien hoe je een templatefunctie maakt die één parameter van een generiek type T accepteert. Dit stelt de functie in staat om met elk gegeven type te werken dat tijdens de instantiering wordt opgegeven.

single_parameter.h

single_parameter.h

multiple_parameters.h

multiple_parameters.h

12
template<typename T> void SimpleTemplate(T value) {}

Klasse-templates

Templates kunnen ook op klassen worden toegepast, waardoor het mogelijk is om klasse-definities te maken die geparameteriseerd zijn. Het volgende voorbeeld laat zien hoe je een klasse-template maakt die een waarde van een generiek type T opslaat en een constructor bevat voor initialisatie:

class_template.h

class_template.h

1234567
template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };

Templatespecialisatie

Templatespecialisatie maakt het mogelijk om specifieke implementaties van een template te maken voor bepaalde datatypen. Dit is nuttig wanneer een generieke implementatie niet volstaat of wanneer speciaal gedrag vereist is. Het volgende voorbeeld laat zien hoe een templatefunctie gespecificeerd kan worden voor verschillende datatypen, waaronder int, bool en 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`
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

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

Sectie 4. Hoofdstuk 5
some-alt