1

オブジェクトを初期化するには多くの方法がありますが、そのうちの 1 つは特定のユーザー定義型のコンストラクターを呼び出すことです。以下に例を示します。

Hello my_hello = Hello(3);
Hello my_hello(3);

ご存じのとおり、コンストラクターは何も返しません。ただし、上記のように、初期化されたオブジェクトを返すようです。さらに、代入演算子は、右側のオブジェクトを左側のオブジェクトにコピーすることを意味するため、より疑わしくなります。

私は間違っていると思いますか?説明していただけますか?

4

3 に答える 3

1

ご存じのとおり、コンストラクターは何も返しません。

これは、標準に従って厳密に当てはまります。

ただし、 T のコンストラクターを T を返す関数と見なす (または、それを a'lanewと placementに置き換えるnew) 方がはるかに簡単です。これは基本的に、それらが使用および実装される方法です。

また、コードに代入演算子はありません。これはコピー初期化であり、同じものではありません。my_helloオブジェクトは からコピーされますHello(3)

于 2013-08-10T12:00:03.520 に答える