Skabeloner med standardtypeparametre
Stryg for at vise menuen
Det er muligt at angive en standardparametertype for en klassetemplate, og fra og med C++11 kan standard template-argumenter også bruges i funktionstemplates. For at angive en standardtype skrives den ønskede type blot efter lighedstegnet 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 kører koden ovenfor, vil output være 25 i stedet for 25.5. Dette sker, fordi standardtypen for Box-klassen er sat til int, hvilket afkorter decimaldelen af værdien.
Ligesom med standardargumenter for funktioner gælder det, at hvis én skabelonparameter har et standardargument, skal alle efterfølgende skabelonparametre også have standardargumenter.
Ud over standardtypeparametre tillader C++ også ikke-type skabelonparametre med standardværdier. Ikke-type parametre kan være heltalstyper, pegere eller referencer. For at angive en ikke-type standardparameter tildeles blot en standardværdi efter 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` }
Standard templateparametre forenkler koden, reducerer redundans og gør det muligt for skabeloner at håndtere typiske anvendelsestilfælde med minimal indsats, samtidig med at de tillader tilpasning efter behov.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat