0

実際、私はこのイディオムを定義する方法を知りません。

一部のコードでは、次のような赤いものがあります。

ClassWithAMessage c = "This is the message";

私が読むと思っていた場所:

ClassWithAMessage c("This is the message");

この動作を再現する方法がわかりません。誰かが情報やおもちゃの例を提供できますか?

4

1 に答える 1

5
ClassWithAMessage c = "This is the message";

コピー初期化です。これを機能させるには、コピー コンストラクターを使用できる必要があります。最初に、ClassWithAMessage変換コンストラクタ from を使用してテンポラリが構築され"This is the message"ます。次に、テンポラリをコピー コンストラクタで使用して、 を構築しcます。これはコピー省略の対象となります (temp が存在しない可能性があります)。

ClassWithAMessage c("This is the message");

直接初期化。変換コンストラクターが直接使用されます。

イディオムではなく、オブジェクトを構築するさまざまな方法です。

于 2012-09-17T16:03:10.003 に答える