1. ホーム
  2. c++

[解決済み] std::move()とは何ですか?また、どのような場合に使用するのですか?

2022-03-01 01:59:53

質問

  1. それは何ですか?
  2. 何をするものですか?
  3. どのような場合に使用するのですか?

良いリンクはありがたい。

解決方法は?

C++11 の R 値参照と移動コンストラクタに関する Wikipedia のページ

  1. C++11 では、コピー コンストラクタに加えて、オブジェクトは移動コンストラクタを持つことができます。
    (また、コピー代入演算子だけでなく、移動代入演算子もあります)。
  2. オブジェクトが "rvalue-reference" 型である場合、コピーコンストラクタの代わりに移動コンストラクタが使用されます ( Type && ).
  3. std::move() は、オブジェクトへのrvalue-referenceを生成するキャストで、オブジェクトからの移動を可能にします。

これは、コピーを避けるための新しいC++の方法である。たとえば、移動コンストラクタを使用すると std::vector は、その内部のデータへのポインタを新しいオブジェクトにコピーするだけで、移動したオブジェクトを移動後の状態に残し、したがってすべてのデータをコピーしないことができます。これは C++ Valid となる。

move semantics, rvalue, perfect forwarding でググってみてください。