0

私が注目しているコピー省略の 2 つの形式は、非常に制限されています。これは、return ステートメント内で、変数を一時変数で初期化する場合にのみ許可されます。したがって、これらにはコピー省略は含まれません。

// Not initialization
Noisy b;
b = Noisy{};
// Not temporary
Noisy c = a;

これの理由は何ですか?それは技術的な制限ですか..それとも..?

4

2 に答える 2

4

最適化は、最終的にその場所にコピーされる「ターゲット」オブジェクトのストレージを使用して、1 つのオブジェクトを完全に削除することによって機能します。次に、コピーが行われることになっているときに、ターゲット オブジェクトは既に正しい値を持っているため、それ以上のアクションは必要ありません。

「新しい」オブジェクトをその場所に作成できないため、ターゲットオブジェクトが既に存在する場合、これは機能しません。または、2番目の例のように、コピー後に省略されたオブジェクトが存在する必要がある場合。

于 2015-03-09T11:59:46.690 に答える