Translations of this page?:

explicit

コンストラクタを明示的に定義するときに使用します。コンストラクタでの自動的な変換は行われなくなります。 ただし、パラメータコンストラクタに渡されたときは変換が行われます。サンプルを示します:

    struct foo {
      explicit foo( int a )
        : a_( a )
      { }
 
      int a_;
    };
 
    int bar( const foo & f ) {
      return f.a_;
    }
 
    bar( 1 );  // explicitによって、intからfooへの暗示的な変換が禁止されているため失敗します
 
    bar( foo( 1 ) );  // 動作します。explicitなコンストラクタを明示的に呼び出しています
 
    bar( static_cast<foo>( 1 ) );  // 動作します。明示的なキャストを使ってexplicitなコンストラクタが呼ばれます
 
    bar( foo( 1.0 ) );  // 動作します。intからfloatへの自動変換が行われ、
                        // explicitなコンストラクタを明示的に呼び出されています
 
• • • SitemapRecent changesRSScc