コンストラクターが定義されたクラスXがあるとしX(int value)
ます。
これは意味的に同等ですか?
X x = 42;
X x(42);
Xのコンストラクターに明示的なキーワードを追加した場合にのみ違いが現れると思います。そうでない場合、コンパイラーは式X x = 42;
を次のように減らします。X x(42);
間違っていたら訂正してください。
コンストラクターが定義されたクラスXがあるとしX(int value)
ます。
これは意味的に同等ですか?
X x = 42;
X x(42);
Xのコンストラクターに明示的なキーワードを追加した場合にのみ違いが現れると思います。そうでない場合、コンパイラーは式X x = 42;
を次のように減らします。X x(42);
間違っていたら訂正してください。
フォーム
X x = 42;
コンストラクターが非明示的であり、アクセス可能なコピーコンストラクターが存在する必要があります。実装は一時的なものを作成してそれをコピーすることを許可されていますが、私が知っている実装ではそれを行いません。
意味的には、2つの操作は仕様の言語ごとに異なりますが、コンパイル後の効果的な結果は、次の状況では同じです。
X
あり、引数型は非定数l値参照ではありませんX
あり、引数は再び非定数l値参照ではありませんexplicit