7

コンストラクターが定義されたクラスXがあるとしX(int value)ます。

これは意味的に同等ですか?

X x = 42;
X x(42);

Xのコンストラクターに明示的なキーワードを追加した場合にのみ違いが現れると思います。そうでない場合、コンパイラーは式X x = 42;を次のように減らします。X x(42);

間違っていたら訂正してください。

4

2 に答える 2

7

フォーム

X x = 42;

コンストラクターが非明示的であり、アクセス可能なコピーコンストラクターが存在する必要があります。実装は一時的なものを作成してそれをコピーすることを許可されていますが、私が知っている実装ではそれを行いません。

于 2012-03-19T20:57:28.460 に答える
5

意味的には、2つの操作は仕様の言語ごとに異なりますが、コンパイル後の効果的な結果は、次の状況では同じです。

  1. 整数型を取ることができる単一の引数コンストラクターがXあり、引数型は非定数l値参照ではありません
  2. 整数型を引数型に変換できる単一の引数コンストラクターがXあり、引数は再び非定数l値参照ではありません
  3. #2の場合、コンストラクターは次のように宣言されていません。explicit
于 2012-03-19T20:49:03.317 に答える