Przestrzenie nazw
Warianty

explicit

Z cppreference.com

Przy oznaczeniu konstruktora jako explicit, nie będzie przeprowadzana automatyczna konwersja przy pomocy tego konstruktora. Konstruktor ten może jednak przyjmować skonwertowane parametry. Przykład:

    struct foo {
      explicit foo( int a )
        : a_( a )
      { }

      int a_;
    };

    int bar( const foo & f ) {
      return f.a_;
    }

    bar( 1 );  // BŁĄD. konwersja z int na foo jest zablokowana przez parametr explicit

    bar( foo( 1 ) );  // DOBRZE. wywołanie konstruktora z pomocą wybranego "bezpiecznego" parametru

    bar( static_cast<foo>( 1 ) );  // DOBRZE - wywołanie konstruktora z pomocą rzutowanego parametru

    bar( foo( 1.0 ) );  // DOBRZE - wywołanie konstruktora z pomocą rzutowanego parametru przy czym parametr automatycznie wykona konwersje z float to int
Morty Proxy This is a proxified and sanitized view of the page, visit original site.