Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Templates met Standaardtypeparameters | Klassetemplates
C++-Templates

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

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.

Note
Opmerking

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

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.

question mark

Wanneer een templateparameter een standaardwaarde heeft, welke van de volgende uitspraken is waar?

Selecteer alle juiste antwoorden

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 3
some-alt