移動元オブジェクトに対して許可される操作は何ですか?
C 標準は、移動元オブジェクトの動作を定義します。この知識は、std::swap などの特定の関数がどのように機能するかを理解するために非常に重要です。
標準定義
標準 (セクション 17.6.5.15) によると、 C 標準ライブラリ タイプのオブジェクトは移動でき、その後「有効だが未指定」に配置されます。 state."
操作への影響
オブジェクトが未指定の状態にある場合、前提条件のない任意の操作を実行できます。前提条件のない操作には次のものが含まれます。
ただし、操作前提条件がある場合は、通常、さらに確認しないと実行できません。例:
例: std::swap
標準:元の質問に示されているように、:swap 関数には、移動元オブジェクトへの代入が必要です。これは、代入が前提条件のない操作であるため可能です。
補足: T c = std::move(a) と T c(std::move(a))
std::swap 実装では、コピー コンストラクター T の代わりに直接移動代入 T c = std::move(a) が使用されます。 c(std::move(a))。これは、パフォーマンスの低下につながる、a の不必要なコピーを避けるために行われます。
以上がC で移動元オブジェクトを使用して何ができるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。