Kursinhalt
C++-Vorlagen
C++-Vorlagen
Vorlagen mit Standardtyp-Parametern
Es ist möglich, einen Standardparametertyp für eine Klassenvorlage anzugeben, und ab C++11 können Standardvorlagenargumente auch in Funktionsvorlagen verwendet werden. Um einen Standardtyp festzulegen, schreiben Sie einfach den gewünschten Typ nach dem Gleichheitszeichen für den Vorlagenparameter.
main
#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); }
Wenn Sie den obigen Code ausführen, wird die Ausgabe 25
anstelle von 25.5
sein. Dies geschieht, weil der Standardtyp für die Box
-Klasse auf int
gesetzt ist, was den Dezimalteil des Wertes abschneidet.
Hinweis
Ähnlich wie bei Standardargumenten für Funktionen, wenn ein Template-Parameter ein Standardargument hat, müssen alle folgenden Template-Parameter ebenfalls Standardargumente haben.
Zusätzlich zu Standardtyp-Parametern erlaubt C++ auch Nicht-Typ-Template-Parameter mit Standardwerten. Nicht-Typ-Parameter können integrale Typen, Zeiger oder Referenzen sein. Um einen Nicht-Typ-Standardparameter anzugeben, weisen Sie einfach einen Standardwert nach dem Parameter zu.
array
// `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-Template-Parameter vereinfachen den Code, reduzieren Redundanzen und ermöglichen es Templates, typische Anwendungsfälle mit minimalem Aufwand zu bewältigen, während sie bei Bedarf Anpassungen zulassen.
Danke für Ihr Feedback!