Heim > Backend-Entwicklung > C++ > Welche Vorgänge sind für aus C verschobene Objekte zulässig?

Welche Vorgänge sind für aus C verschobene Objekte zulässig?

Patricia Arquette
Freigeben: 2025-01-01 14:08:10
Original
834 Leute haben es durchsucht

What Operations Are Allowed on Moved-From C   Objects?

Zulässige Vorgänge für verschobene Objekte

Der C-Standard definiert, welche Aktionen mit verschobenen Objekten zulässig sind. Es wird davon ausgegangen, dass sich diese Objekte in einem nicht spezifizierten Zustand befinden, was eine begrenzte Auswahl an Vorgängen ermöglicht.

Standardreferenz

Abschnitt 17.6.5.15 [lib.types.movedfrom] Der Standard besagt, dass verschobene Objekte „in einem gültigen, aber nicht spezifizierten Zustand platziert werden sollen Zustand.“

Nicht restriktive Operationen

Objekte in einem nicht spezifizierten Zustand können Operationen unterzogen werden, für die keine Vorbedingungen gelten. Gängige Beispiele sind:

  • Zerstörung
  • Zuweisung
  • Konstante Beobachter (z. B. get, empty, size)

Restriktive Operationen

Operationen mit Vorbedingungen, wie z Dereferenzierung oder Pop_back können nicht direkt auf verschobene Objekte durchgeführt werden, da der nicht spezifizierte Zustand des Objekts möglicherweise nicht die erforderlichen Anforderungen erfüllt.

Beispiel: std::swap

Die beispielhafte Swap-Funktionsvorlage basiert auf Zuweisungen zu verschobenen Objekten (Zeilen 2 und 3). Dies ist gültig, da die Zuweisung eine nicht einschränkende Operation ist.

Alternative Konstruktorsyntax

In Bezug auf Zeile 1 gilt die Verwendung von T c = std::move(a) ; statt T c(std::move(a)); ist aus Effizienzgründen. Für die direkte Initialisierung ist ein Aufruf des Kopierkonstruktors erforderlich, für die Zuweisung jedoch nicht.

Das obige ist der detaillierte Inhalt vonWelche Vorgänge sind für aus C verschobene Objekte zulässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage