Templates mit Standardtyp-Parametern
Swipe um das Menü anzuzeigen
Es ist möglich, einen Standardtyp für einen Klassentemplate-Parameter anzugeben. Seit C++11 können Standardtemplate-Argumente auch in Funktionstemplates verwendet werden. Um einen Standardtyp festzulegen, schreibt man einfach den gewünschten Typ nach dem Gleichheitszeichen beim Template-Parameter.
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); }
Beim Ausführen des obigen Codes wird die Ausgabe 25 statt 25.5 sein. Dies liegt daran, dass der Standardtyp für die Klasse Box auf int gesetzt ist, wodurch der Dezimalanteil des Wertes abgeschnitten wird.
Ähnlich wie bei Standardargumenten von Funktionen gilt: Wenn ein Template-Parameter ein Standardargument besitzt, müssen alle nachfolgenden Template-Parameter ebenfalls Standardargumente haben.
Zusätzlich zu Standard-Typ-Parametern erlaubt C++ auch nicht-typisierte Template-Parameter mit Standardwerten. Nicht-typisierte Parameter können Ganzzahltypen, Zeiger oder Referenzen sein. Um einen nicht-typisierten Standardparameter anzugeben, weist man dem Parameter einfach einen Standardwert zu.
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` }
Standardmäßige Template-Parameter vereinfachen den Code, reduzieren Redundanz und ermöglichen es Templates, typische Anwendungsfälle mit minimalem Aufwand zu behandeln, während sie bei Bedarf Anpassungen zulassen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen