Templates met Standaardtypeparameters
Veeg om het menu te tonen
Het is mogelijk om een standaard parameter type op te geven voor een klasse-template en vanaf C++11 kunnen standaard template-argumenten ook worden gebruikt in functietemplates. Om een standaardtype in te stellen, schrijf je het gewenste type na het gelijkteken voor de templateparameter.
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); }
Wanneer je de bovenstaande code uitvoert, zal de uitvoer 25 zijn in plaats van 25.5. Dit komt doordat het standaardtype voor de klasse Box is ingesteld op int, waardoor het decimale gedeelte van de waarde wordt afgekapt.
Vergelijkbaar met standaardfunctieargumenten geldt dat als één sjabloonparameter een standaardargument heeft, alle daaropvolgende sjabloonparameters ook standaardargumenten moeten hebben.
Naast standaard typeparameters staat C++ ook niet-type sjabloonparameters met standaardwaarden toe. Niet-type parameters kunnen gehele typen, pointers of referenties zijn. Om een niet-type standaardparameter op te geven, wijs je eenvoudig een standaardwaarde toe na de parameter.
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` }
Standaard templateparameters vereenvoudigen code, verminderen overbodigheid en stellen templates in staat om typische gebruikssituaties met minimale inspanning af te handelen, terwijl maatwerk mogelijk blijft wanneer nodig.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.