explicit
Nach oben zu Schlüsselwörter alphabetisch - Index
Kategorie
C++-spezifische Schlüsselwörter
Syntax
explicit <einzel-parameter konstruktor deklaration>
Beschreibung
Normalerweise kann einer Klasse mit einen Konstruktor, der genau einen Parameter enthält, ein Wert zugewiesen werden, der zum Konstruktortyp passt. Dieser Wert wird automatisch (implizit) in ein Objekt der Klasse konvertiert, an die die Zuweisung erfolgte. Sie können das Erscheinen dieser Art von impliziter Umwandlung verhindern, indem Sie den Konstruktor der Klasse mit dem Schlüsselwort explicit deklarieren. An alle Objekte dieser Klasse müssen dann Werte zugewiesen werden, die vom Klassentyp sind, alle anderen Zuweisungen ergeben einen Compilerfehler.
An Objekte der folgenden Klasse können Werte zugewiesen werden, die zu dem Konstruktortyp oder zu dem Klassentyp passen:
class X { public: X(int); X(const char*, int = 0); };
Dann sind die folgenden Zuweisungen gültig.
void f(X arg) { X a = 1; X B = "Jessie"; a = 2; }
Objekten der folgenden Klassen können jedoch Werte zugewiesen werden, die nur zum Klassentyp passen:
class X { public: explicit X(int); explicit X(const char*, int = 0); };
Die Konstruktoren des Typs explicit erwarten dann, dass die Werte in den folgenden Zuweisungen zu den Klassentypen umgewandelt werden, an die sie zugewiesen werden.
void f(X arg) { X a = X(1); X b = X("Jessie",0); a = X(2); }