Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mallit Oletustyyppiparametreilla | Luokkamallipohjat
C++-Template-Luokat

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

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.

Note
Huomio

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

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.

question mark

Kun malliparametrilla on oletusarvo, mikä seuraavista pitää paikkansa?

Valitse kaikki oikeat vastaukset

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 3. Luku 3
some-alt