2017-07-19 8 views
1

一般に、単一の引数を持つコンストラクタでexplicitキーワードを使用することをお勧めします。しかし、C++ 11では、複数の引数を持つコンストラクタを暗黙的な変換に使用できます。したがって、> 0引数のすべてのコンストラクタに明示的なキーワードを適用することをお勧めしますか?C++用の複数のパラメータを持つ明示的なキーワードとコンストラクタ11

答えて

0

明示的な一般的なルールは、このコンストラクタを暗黙的に呼び出すかどうかです。

「はい」の場合は明示しないでください。

いいえの場合は明示してください。

1つの引数ctorsの場合、必要に応じてintdoubleに変換すると、その型からの変換は無損失で無害です。

> 1引数の場合は、{}ベースの構築を有効にするかどうかを決定します。ときどきそれは良い考えですが、時には悪い考えです。

C++ 11および14では、型を移動またはコピーできないときに関数から値を返すためには、構造体が必要です。場合によっては、何らかの理由で「暗黙的な{}の使用」を避けたい場合は、{}をより明示的にするタグタイプを使用します。

C++では、本当に必要な理由が少なくなります{} prvaluesはもはやオブジェクトではなく構築命令です。つまり、return T(blah)は、Tを返す関数内のTを移動/コピーせず、むしろblahからそれを構成します。正確にあなたが{}をブロックしたい

は意見の問題、およびSO Q & A.

には適していません
関連する問題