0

C++ では、明示的な変換が許可されない場合に、変換コンストラクターを介して暗黙的な変換を抑制するためのキーワード explicit が提供されています。明示的に宣言されたコンストラクターは、暗黙的な変換では使用できません。コンパイラが暗黙的な変換を実行するために使用してはならない単一引数のコンストラクターでは、explicit キーワードを使用します。

これは理にかなっていますが、コピー コンストラクターにキーワード explicit を引き続き使用する必要がありますか? キーワードの明示的な使用が役立つその他のケースとその理由は何ですか?

4

1 に答える 1

4

コピー コンストラクターを明示的に宣言することは正当です。それを宣言するかどうかは、実際に何をしたいかによって異なります。たとえば、explicit関数呼び出しまたはコピー初期化構文で暗黙的に呼び出されないようにする場合は、コピー コンストラクターを宣言します。

于 2015-12-15T10:56:41.647 に答える