C++ では、明示的な変換が許可されない場合に、変換コンストラクターを介して暗黙的な変換を抑制するためのキーワード explicit が提供されています。明示的に宣言されたコンストラクターは、暗黙的な変換では使用できません。コンパイラが暗黙的な変換を実行するために使用してはならない単一引数のコンストラクターでは、explicit キーワードを使用します。
これは理にかなっていますが、コピー コンストラクターにキーワード explicit を引き続き使用する必要がありますか? キーワードの明示的な使用が役立つその他のケースとその理由は何ですか?