質問
私は最近、3つのコンストラクタを持っていたいくつかの奇妙な格好クラスに出くわしました
class Class
{
public:
explicit Class(int );
Class(AnotherClass );
explicit Class(YetAnotherClass, AnotherClass );
// ...
}
私は明示的なキーワードが外国タイプからコンパイラ選ばれたの建設を保護することであると思った。 - これは本当に私には意味がありません。
この許可されていますか?それそれならば、それは何を意味するのでしょうか?
解決
C ++ 11マルチパラメータコンストラクタにおいて暗黙ブレース初期化とに変換することができる。
しかし、C ++ 11 explicit
前単一引数のコンストラクタに適用されます。複数の引数のコンストラクタの場合、それは無視され、は何の効果を持っていませんでした。
所属していません StackOverflow