質問

私は最近、3つのコンストラクタを持っていたいくつかの奇妙な格好クラスに出くわしました

class Class
{
    public:
        explicit Class(int );

        Class(AnotherClass );

        explicit Class(YetAnotherClass, AnotherClass );

    // ...
}
私は明示的なキーワードが外国タイプからコンパイラ選ばれたの建設を保護することであると思った。

-

これは本当に私には意味がありません。

この許可されていますか?それそれならば、それは何を意味するのでしょうか?

役に立ちましたか?

解決

C ++ 11マルチパラメータコンストラクタにおいて暗黙ブレース初期化とに変換することができる。

しかし、C ++ 11 explicit前単一引数のコンストラクタに適用されます。複数の引数のコンストラクタの場合、それは無視され、は何の効果を持っていませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top