Basic Syntax of Templates in C++
Pyyhkäise näyttääksesi valikon
Templaatin luominen on itse asiassa varsin yksinkertaista, ja se on yksi helpoimmista osista niiden käytössä. Aloittaaksesi sinun täytyy luoda joko funktio tai luokka. Aloitamme funktiolla.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Kuten näet, kyseessä on hyvin yksinkertainen funktio, joka ei tee vielä mitään. Voimme helposti kutsua sitä main-funktiossa. Tehtävänäsi on nyt muuttaa se templaattiin.
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() { }
Nyt tehdään siitä toimiva, esimerkiksi tulostamalla viesti. Kutsu sitä pääfunktiossa nähdäksesi sen toiminnassa.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Kuten huomaat, virhe tapahtuu, kun yrität kutsua sitä kuin tavallista funktiota. Tämä johtuu siitä, että kyseessä ei ole enää pelkkä yksinkertainen funktio. Tässä vaiheessa kulmasulkeiden sisällä template-avainsanan jälkeen määritelty malliparametri on olennainen.
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 }
Tällä esimerkillä ei ole väliä, minkä tyypin määrität, joten voit vaihtaa void mihin tahansa haluamaasi tyyppiin. Tyypin määrittäminen on kuitenkin pakollista.
MyFirstTemplate-funktiotemplaatin tapauksessa tyyppiparametrille ei ole pakko määrittää nimeä. Voit poistaa Name-osan, ja kaikki toimii silti, koska tyyppiparametria ei käytetä funktion sisällä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme