IT-Lexikon › Programmierung › Move-Semantik

Move-Semantik

Programmierung Svenska → Aktualisiert: 2026-09-10

Der Besitz einer Ressource wird übertragen, statt ihr Inhalt kopiert. Kam mit C++11 und ist die größte Performance-Änderung, die die Sprache je erfahren hat.

Vor 2011 bedeutete die Rückgabe eines großen Vektors im schlimmsten Fall, den kompletten Inhalt zu kopieren — die Behelfslösungen, etwa Referenzen zum Befüllen zu übergeben oder Zeiger zurückzugeben, prägten, wie Code aussah. Mit Rvalue-Referenzen kann ein Typ einen Move-Konstruktor definieren, der einem ohnehin gleich zerstörten Objekt einfach den internen Zeiger stiehlt und es leer, aber gültig zurücklässt. Die Kosten sinken von linear in der Größe auf ein paar Zuweisungen.

std::move bewegt trotz des Namens gar nichts — es ist nur ein Cast, der ankündigt, dass das Objekt geplündert werden darf. Rust hat die Idee konsequent zu Ende gedacht und Move zum Standardverhalten gemacht, wobei der Compiler dafür sorgt, dass niemand danach noch aufs Original zugreift.

← Zurück zum Lexikon