Grundlæggende Syntaks for Templates i C++
Stryg for at vise menuen
At oprette en template er faktisk ret simpelt, og det er en af de nemmeste dele ved at bruge dem. For at begynde skal du enten oprette en funktion eller en klasse. Vi starter med funktionen.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Som du kan se, er der en meget simpel funktion, der ikke gør noget endnu. Vi kan nemt kalde den inde i main-funktionen. Din opgave nu er at gøre den til en 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() { }
Lad os nu få det til at gøre noget, for eksempel udskrive en besked. Kald den inde i main-funktionen for at se den i aktion.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Som du kan se, opstår der en fejl, når du forsøger at kalde den, som om det var en almindelig funktion. Dette sker, fordi det ikke længere blot er en simpel funktion. På dette tidspunkt bliver skabelonparameteren, der er angivet i vinkelparenteserne efter template-nøgleordet, afgørende.
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 }
Det er ligegyldigt, hvilken type du angiver i dette eksempel, så du kan ændre void til enhver ønsket type. Det er dog obligatorisk at angive typen.
For MyFirstTemplate funktionsskabelonen er det ikke nødvendigt at angive et navn for typeparameteren. Du kan fjerne Name, og alt vil stadig fungere, fordi typeparameteren ikke bruges inde i funktionen.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat