explicit

Aus cppreference.com
< cpp
Wechseln zu: Navigation, Suche

Ist ein Konstruktor als explicit ausgezeichnet, so wird er in keine automatische Typkonvertierung mit einbezogen. Parameter des Konstruktors selbst können aber sehr wohl implizit/automatisch umgewandelt werden.

Beispiel:

    struct foo {
      explicit foo( int a )
        : a_( a )
      { }
 
      int a_;
    };
 
    int bar( const foo & f ) {
      return f.a_;
    }
 
    bar( 1 );  // Scheitert, da eine implizite Konvertierung von int zu foo durch explicit
               // verboten wurde.
 
    bar( foo( 1 ) );  // Funktioniert -- ausdrücklicher Aufruf des explicit Konstruktors.
 
    bar( static_cast<foo>( 1 ) );  // Funktioniert -- Aufruf des explicit Konstruktors mittels
                                   // ausdrücklicher Typwandlung.
 
    bar( foo( 1.0 ) );  // Funktioniert -- ausdrücklicher Aufruf des explicit Konstruktors
                        // mit automatischer Umwandlung von float zu int.
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge
In anderen Sprachen