Basissyntaxis van templates in C++
Veeg om het menu te tonen
Het maken van een template is eigenlijk vrij eenvoudig en behoort tot de makkelijkste onderdelen van het gebruik ervan. Om te beginnen maak je een functie of een klasse aan. We beginnen met de functie.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Zoals je kunt zien, is er een zeer eenvoudige functie die voorlopig niets doet. We kunnen deze eenvoudig aanroepen binnen de main functie. Je taak is nu om deze om te zetten naar een template.
template.h
123456789101112// To create a template, you need to add code above the function or class // Start with the keyword `template` to indicate you're defining a template // template // Add angle brackets `<>`, this is list of the parameters for template // template < > // Inside of it has to be keyword `typename` and the name of it // template <typename Name> template <typename Name> void MyFirstTemplate() { }
Laten we het nu iets laten doen, zoals het afdrukken van een bericht. Roep het aan binnen de main-functie om het in actie te zien.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Zoals je kunt zien, treedt er een fout op wanneer je probeert deze aan te roepen alsof het een gewone functie is. Dit gebeurt omdat het niet langer slechts een eenvoudige functie is. Op dit punt wordt de templateparameter die binnen de punthaken na het template-sleutelwoord is opgegeven, essentieel.
main.cpp
12345678910111213#include <iostream> // This essentioally creates an alias for a type you will use template<typename Name> // In this case the name of the type is Name void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { // In order to call the template function properly // You need to specify any type inside the brackets MyFirstTemplate<void>(); // This tells the template to use void as the type for Name }
Het maakt niet uit welk type je voor dit voorbeeld opgeeft, dus je kunt void wijzigen in elk gewenst type. Het opgeven van het type is echter verplicht.
Voor de MyFirstTemplate functietemplate is het niet noodzakelijk om een naam op te geven voor de typeparameter. Je kunt Name verwijderen en alles blijft werken omdat de typeparameter niet binnen de functie wordt gebruikt.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.