Osio 2. Luku 3
single
Ei-tyyppiset Malliparametrit
Pyyhkäise näyttääksesi valikon
Määriteltäessä mallipohjaa (template), voidaan tyyppien lisäksi välittää myös arvoja. Tämä mahdollistaa mallipohjien luomisen, jotka käyttäytyvät eri tavoin annettujen arvojen perusteella, mutta palaamme tähän aiheeseen hieman myöhemmin.
main.cpp
123456789101112#include <iostream> // Non-type parameter means we won't use typename // Instead you can use an actual type for it template<int N> void PrintValue() { std::cout << N << std::endl; } int main() { // Call the template function with a literal integer PrintValue<5>(); // 5 }
Tämän lähestymistavan tärkein etu on, että kaikki laskutoimitukset suoritetaan käännösaikana, mikä mahdollistaa sen käytön metaprogrammoinnissa.
main.cpp
1234567891011#include <iostream> // Template function to calculate the square of a non-type parameter I template<int I> int Square() { return I * I; } // Return the square of I int main() { // The result of Square<5>() is computed at compile time int b = Square<5>(); // b will be initialized to 25 }
Kun suoritat käännetyn ohjelman, b:n arvo on jo 25. Laskenta suoritetaan käännösaikana, mikä johtaa nollaan suoritusaikaisiin operaatioihin.
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 2. Luku 3
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme