Yleiskatsaus
Pyyhkäise näyttääksesi valikon
Templaatteja käytetään luomaan geneeristä ja uudelleenkäytettävää koodia, mikä parantaa ohjelmien joustavuutta ja ylläpidettävyyttä merkittävästi. Tämä yleiskatsaus tiivistää kurssilla käsiteltävät keskeiset käsitteet ja osiot.
Templaatin luominen
Templaatin luontiin käytetään avainsanaa template, jota seuraavat kulmasulkeisiin sijoitetut templaattiparametrit. Alla on esimerkki perus templaattifunktiosta, joka ei ota parametreja.
template.h
12template<typename> void SimpleTemplate() {}
Templaatit ja parametrit
Templaatit voivat myös ottaa parametreja, mikä tekee niistä monipuolisempia. Tässä esimerkissä näytetään, kuinka luodaan templaattifunktio, joka ottaa yhden geneerisen tyyppisen T-parametrin. Tämä mahdollistaa funktion käytön minkä tahansa tietotyypin kanssa instanssoinnin yhteydessä.
single_parameter.h
multiple_parameters.h
12template<typename T> void SimpleTemplate(T value) {}
Luokkatemplaatit
Templaatteja voidaan käyttää myös luokkiin, jolloin voidaan luoda parametroitavia luokkamäärittelyjä. Seuraava esimerkki havainnollistaa, kuinka luodaan luokkatemplaatti, joka tallentaa geneerisen tyyppisen T arvon ja sisältää konstruktorin alustusta varten:
class_template.h
1234567template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };
Mallin erikoistaminen
Mallin erikoistaminen mahdollistaa tietylle tietotyypille räätälöityjen toteutusten luomisen mallille. Tämä on hyödyllistä, kun geneerinen toteutus ei riitä tai kun tarvitaan erityistä toimintaa. Seuraava esimerkki näyttää, kuinka mallifunktio erikoistetaan eri tietotyypeille, kuten int, bool ja std::string:
specialization.h
1234567891011template <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`
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme