ホームページ > バックエンド開発 > C++ > 移動元の C オブジェクトではどのような操作が許可されますか?

移動元の C オブジェクトではどのような操作が許可されますか?

Patricia Arquette
リリース: 2025-01-01 14:08:10
オリジナル
834 人が閲覧しました

What Operations Are Allowed on Moved-From C   Objects?

移動元オブジェクトで許可される操作

C 標準では、移動元のオブジェクトに対してどのようなアクションが許可されるかを定義しています。これらのオブジェクトは未指定の状態にあるとみなされ、限られた範囲の操作が可能です。

標準リファレンス

セクション 17.6.5.15 [lib.types.movedfrom]標準では、移動元オブジェクトは「有効だが指定されていない場所に配置されるものとする」と規定されています。 state."

非制限的な操作

指定されていない状態のオブジェクトは、前提条件のない操作を受けることができます。一般的な例は次のとおりです。

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

制限的操作

オブジェクトの不特定の状態が必要な要件を満たしていない可能性があるため、逆参照や Pop_back などの前提条件のある操作を移動元オブジェクトに対して直接実行することはできません。

例: std::swap

スワップ関数テンプレートの例移動元オブジェクトへの代入に依存します (2 行目と 3 行目)。これは、代入が非制限的な操作であるため有効です。

代替コンストラクター構文

行 1 に関して、T c = std::move(a) の使用; T c(std::move(a)) の代わりに;効率上の理由からです。直接初期化にはコピー コンストラクターの呼び出しが必要ですが、割り当ては必要ありません。

以上が移動元の C オブジェクトではどのような操作が許可されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート