Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Vorlagen mit Standardtyp-Parametern | Klassenvorlagen
C++-Vorlagen

bookVorlagen 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.cpp

main.cpp

copy
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); }

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.h

array.h

copy
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` }

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.

question mark

Wenn ein Template-Parameter einen Standardwert hat, was ist dann richtig?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 5.88

bookVorlagen mit Standardtyp-Parametern

Swipe um das Menü anzuzeigen

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.cpp

main.cpp

copy
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); }

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.h

array.h

copy
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` }

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.

question mark

Wenn ein Template-Parameter einen Standardwert hat, was ist dann richtig?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3
some-alt