IT用語集 › プログラミング › ムーブセマンティクス

ムーブセマンティクス

プログラミング Svenska → 更新: 2026-10-21

リソースの中身をコピーせず、所有権ごと移す仕組み。C++11で導入され、この言語が行った性能面で最大の変更である。

2011年より前は、大きなvectorを返すと最悪の場合は全要素のコピーが発生した。そのため、参照を渡して埋めさせる、ポインタを返すといった回避策がコードの書き方を左右していた。右辺値参照によって、型は「どうせ破棄される」オブジェクトから内部ポインタを奪うムーブコンストラクタを定義できるようになった。元のオブジェクトは空だが有効な状態で残る。コストはサイズに比例する量から、数回の代入へと下がる。名前に反して std::move は何も動かさず、「奪ってよい」と宣言するキャストにすぎない。Rustはこの考えを徹底し、ムーブを既定とした。移動後に元の値へ触れないことはコンパイラが保証する。

← 用語集に戻る