Traductions de cette page?:

explicit

Un constructeur prenant un seul argument peut être utilisé pour effectuer des conversions automatiques de type vers le type de classe.

Quand un constructeur est défini avec le mot-clé explicit, les conversions automatiques de type sont désactivées pour ce constructeur.

Note : Ceci n'empêche pas la conversion automatique des paramètres, comme le montre l'exemple suivant :

    struct foo {
      explicit foo( int a )
        : a_( a )
      { }
 
      int a_;
    };
 
    int bar( const foo & f ) {
      return f.a_;
    }
 
    bar( 1 );  // Non permis, le mot-clé explicit interdit la conversion
               // automatique de int vers foo
 
    bar( foo( 1 ) );  // Ok, appel explicite du constructeur
 
    bar( static_cast<foo>( 1 ) );  // Ok, appel explicite du constructeur via un static cast
 
    bar( foo( 1.0 ) );  // Ok, appel explicite du constructeur, avec une conversion
                        // automatique de float vers int