explicit
Besitzt ein Konstruktor einer Klasse exakt einen Parameter, so kann die
Initialisierung des Objektes bei der Definition über eine
Zuweisung erfolgen.
class X
{
//...
public:
X(int);
};
// Erzeugung von Objekten dieser
Klasse:
X a =
42; // erlaubte Zuweisung
X
b(42);
Um diese Zuweisung bei der Initialisierung zu verbieten, muss bei der
Deklaration des Konstruktors das C++-Schlüsselwort
explicit dem Konstruktornamen voran
gestellt werden.
class
X
{
//...
public:
explicit
X(int);
};
// Erzeugung von Objekten dieser
Klasse:
X a =
42; // nicht erlaubte Zuweisung
X
b(42); // erlaubt
Damit behält man die Übersicht und vermeidet unsinnige implizite
Konvertierungen.