Mallar med standardtyp-parametrar
Svep för att visa menyn
Det är möjligt att ange en standardtyp för en klassmall och från och med C++11 kan standardmallargument även användas i funktionsmallar. För att ange en standardtyp, skriv helt enkelt önskad typ efter likhetstecknet för mallparametern.
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ör koden ovan kommer utdata att vara 25 istället för 25.5. Detta sker eftersom standardtypen för klassen Box är satt till int, vilket trunkerar decimaldelen av värdet.
Liknande som förvalda funktionsargument, om en mallparameter har ett standardargument måste alla mallparametrar som följer efter också ha standardargument.
Förutom standardtyp-parametrar tillåter C++ även icke-typ mallparametrar med standardvärden. Icke-typ parametrar kan vara heltalstyper, pekare eller referenser. För att ange en icke-typ standardparameter tilldelar du helt enkelt ett standardvärde efter parametern.
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` }
Standardvärden för mallparametrar förenklar koden, minskar redundans och gör det möjligt för mallar att hantera vanliga användningsfall med minimal ansträngning, samtidigt som anpassning tillåts vid behov.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal