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

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

DDD
DDDOriginal
2024-12-25 11:50:40311Durchsuche

What Operations Are Permissible on Moved-From Standard Library Objects in C  ?

Operationen an verschobenen Objekten

Trotz des weitverbreiteten Missverständnisses, dass verschobene Objekte nur zerstört werden können, spezifiziert der C-Standard, dass verschobene Objekte verwendet werden -from-Objekte von Standardbibliothekstypen werden in einen nicht spezifizierten Zustand versetzt, was einen begrenzten Umfang an Operationen ermöglicht. Dieser Zustand entsteht, nachdem ein Objekt verschoben wurde, und ermöglicht Vorgänge, für die normalerweise keine Vorbedingungen gelten.

Unbedingte Vorgänge

Die folgenden Vorgänge können im Allgemeinen auf das Verschieben von Objekten angewendet werden Objekte, ohne auf Vorbedingungen zu stoßen:

  • Zerstörung:Zuordnung der Objekte aufheben Speicher.
  • Zuweisung:Festlegen eines verschobenen Objekts als Wert eines anderen Objekts.
  • Ständige Beobachtungen:Zugriff auf Informationen wie Getter-Funktionen , Array-Größen und leere boolesche Werte.

Bedingt Vorgänge

Im Gegensatz dazu erfordern die folgenden Vorgänge möglicherweise, dass sich das Objekt nicht in einem nicht spezifizierten Zustand befindet und sind daher bei verschobenen Objekten im Allgemeinen nicht zulässig:

  • Dereferenzierung:Zugriff auf die Interna des Objekts über Zeiger oder Referenzen.
  • Mutation:Änderungen an den Feldern des Objekts vornehmen.

Bezüglich std::swap

In In der beispielhaften Swap-Funktionsvorlage sind die Zuweisungsoperationen (Zeilen 2 und 3) gültig, auch wenn es sich um verschobene Objekte handelt, da dies bei Zuweisungen im Allgemeinen der Fall ist keine Vorbedingungen haben.

Schließlich

Der Standard, der nicht spezifizierte Zustandsobjekte für Standardbibliothekstypen detailliert beschreibt, befindet sich unter 17.6.5.15 [lib.types.movedfrom].

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

Stellungnahme:
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