Maler med standard typeparametere
Sveip for å vise menyen
Det er mulig å angi en standard parameter-type for en klassetemplate, og fra og med C++11 kan standard template-argumenter også brukes i funksjonstemplater. For å sette en standardtype, skriv ønsket type etter likhetstegnet for template-parameteren.
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); }
Når du kjører koden over, vil utdataen være 25 i stedet for 25.5. Dette skjer fordi standardtypen for Box-klassen er satt til int, som kutter bort desimaldelen av verdien.
På samme måte som med standardargumenter for funksjoner, hvis én malparameter har et standardargument, må alle malparametere som følger etter også ha standardargumenter.
I tillegg til standard typeparametere tillater C++ også ikke-type malparametere med standardverdier. Ikke-type parametere kan være heltallstyper, pekere eller referanser. For å angi en ikke-type standardparameter, tildeler du ganske enkelt en standardverdi etter parameteren.
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` }
Standardverdier for malparametere forenkler koden, reduserer redundans og gjør det mulig for maler å håndtere vanlige brukstilfeller med minimal innsats, samtidig som de gir mulighet for tilpasning ved behov.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår