ホームページ >バックエンド開発 >C++ >C で移動元オブジェクトを使用して何ができるでしょうか?

C で移動元オブジェクトを使用して何ができるでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 12:03:09574ブラウズ

What Can You Do with a Moved-From Object in C  ?

移動元オブジェクトに対して許可される操作は何ですか?

C 標準は、移動元オブジェクトの動作を定義します。この知識は、std::swap などの特定の関数がどのように機能するかを理解するために非常に重要です。

標準定義

標準 (セクション 17.6.5.15) によると、 C 標準ライブラリ タイプのオブジェクトは移動でき、その後「有効だが未指定」に配置されます。 state."

操作への影響

オブジェクトが未指定の状態にある場合、前提条件のない任意の操作を実行できます。前提条件のない操作には次のものが含まれます。

  • 破壊
  • 代入
  • 定数オブザーバー (例: get、empty、size)

ただし、操作前提条件がある場合は、通常、さらに確認しないと実行できません。例:

  • 逆参照
  • pop_back

例: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。