10

このプレゼンテーション: http://qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf

explicit著者は、N-ary コンストラクターが C++11 バージョンのキーワードの恩恵を受けることを示唆しています。

複数のコンストラクター パラメーターがある場合にこのキーワードを便利にする C++11 の変更点は何ですか?

4

1 に答える 1

16

AC ++ 11では、複数のパラメーターを持つクラスの非明示的なコンストラクターがある場合(ここでA::A(std::string, int, std::string)は例として使用します)、中括弧の初期化を使用してその型の引数を初期化できます。

void foo(A a);
foo({"the", 3, "parameters"});

同様に、戻り値でも同じことができます。

A bar() {
  return {"the", 3, "parameters"};
}

ただし、コンストラクターがの場合explicit、これらはコンパイルされません。したがって、explicitキーワードは、変換コンストラクターだけでなく、すべてのコンストラクターにとって重要になります。

于 2012-12-14T21:34:35.800 に答える