Grundläggande Syntax för Mallar i C++
Svep för att visa menyn
Att skapa en mall är faktiskt ganska enkelt, och det är en av de lättaste delarna med att använda dem. För att börja behöver du skapa antingen en funktion eller en klass. Vi börjar med funktionen.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Som du kan se finns det en mycket enkel funktion som inte gör något just nu. Vi kan enkelt anropa den inuti main-funktionen. Din uppgift nu är att göra om den till en mall.
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() { }
Låt oss nu få den att göra något, till exempel skriva ut ett meddelande. Anropa den i main-funktionen för att se den i praktiken.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Som du kan se uppstår ett fel när du försöker anropa den som om det vore en vanlig funktion. Detta händer eftersom det inte längre bara är en enkel funktion. Vid denna punkt blir mallparametern som anges inom vinkelparenteserna efter template-nyckelordet avgörande.
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 spelar ingen roll vilken typ du anger i detta exempel, så du kan ändra void till vilken typ du vill. Det är dock obligatoriskt att ange typen.
För funktionsmallen MyFirstTemplate är det inte nödvändigt att ange ett namn för typ-parametern. Du kan ta bort Name, och allt kommer fortfarande att fungera eftersom typ-parametern inte används inuti funktionen.
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