Mallit Oletustyyppiparametreilla
Pyyhkäise näyttääksesi valikon
Luokkamallille voidaan määrittää oletusparametrin tyyppi, ja C++11-versiosta alkaen oletusmalliparametreja voidaan käyttää myös funktiomalleissa. Oletustyypin asettamiseksi kirjoita haluttu tyyppi yhtäsuuruusmerkin jälkeen malliparametrille.
main.cpp
123456789101112131415#include <iostream> template <typename T = int> // `int` will be used as a default type class Box { T value; // Stores the value of type `T` public: Box(T value) : value(value) { std::cout << this->value; } }; int main() { // Type not specified // VV Box<> intBox(25.5); }
Kun suoritat yllä olevan koodin, tuloste on 25 eikä 25.5. Tämä johtuu siitä, että Box-luokan oletustyyppi on asetettu int:ksi, jolloin desimaaliosa arvosta katkaistaan.
Samoin kuin oletusfunktioargumenteissa, jos yhdellä malliparametrilla on oletusargumentti, kaikilla sitä seuraavilla malliparametreilla on myös oltava oletusargumentit.
Oletustyyppiparametrien lisäksi C++ sallii myös ei-tyyppiset malliparametrit, joilla voi olla oletusarvot. Ei-tyyppiset parametrit voivat olla kokonaislukuja, osoittimia tai viitteitä. Ei-tyyppiselle oletusparametrille määritetään oletusarvo lisäämällä arvo parametrin perään.
array.h
123456// `int` and `10` are default parameters template <typename T = int, size_t Size = 10> struct Array { T arr[Size]; // Array with a fixed size of `Size` }
Oletusarvoiset malliparametrit yksinkertaistavat koodia, vähentävät toistoa ja mahdollistavat mallien käytön tavallisissa tapauksissa vähällä vaivalla, mutta sallivat mukauttamisen tarvittaessa.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme