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.


Übersicht Keywords C++