Die explizite Kennung (nur C++)
Die Funktionskennung
explicit steuert unerwünschte implizite Typkonvertierungen. Sie kann nur in Deklarationen von Konstruktoren innerhalb einer Klassendeklaration verwendet werden. Mit Ausnahme des Standardkonstruktors sind die Konstruktoren in der folgenden Klasse beispielsweise Konstruktoren.class A
{ public:
A();
A(int);
A(const char*, int = 0);
};Die folgenden Erklärungen sind legal.
A c = 1;
A d = "Venditti";Die erste Deklaration ist äquivalent zu A
c = A(1).Wenn Sie den Konstruktor der Klasse mit dem Schlüsselwort explicit deklarieren, sind die vorherigen Deklarationen unzulässig.
Angenommen, Sie deklarieren die Klasse wie folgt:
class A
{ public:
explicit A();
explicit A(int);
explicit A(const char*, int = 0);
};Sie können nur Werte zuweisen, die den Werten des Klassentyps entsprechen.
Die folgenden Aussagen sind beispielsweise zulässig:
A a1;
A a2 = A(1);
A a3(1);
A a4 = A("Venditti");
A* p = new A(1);
A a5 = (A)1;
A a6 = static_cast<A>(1);Referenzinformationen