Heim > Backend-Entwicklung > C++ > Hauptteil

Wann werden temporäre Objekte in C zerstört?

Barbara Streisand
Freigeben: 2024-11-12 17:34:02
Original
235 Leute haben es durchsucht

When are Temporary Objects Destroyed in C  ?

Temporäre Objektzerstörung in C

In C werden temporäre Objekte bei Bedarf während der Auswertung von Ausdrücken erstellt. Diese Objekte existieren nur innerhalb des Gültigkeitsbereichs des Ausdrucks und werden nach Abschluss automatisch zerstört.

Betrachten Sie das folgende Beispiel mit drei Codezeilen:

Foo foo{"three"};
Foo{"one"};
std::cout << "two" << '\n';
Nach dem Login kopieren

Der Code gibt „eins“, „ zwei“ und „drei“ in dieser Reihenfolge. Dieses Verhalten ergibt sich aus den folgenden Regeln für die Zerstörung temporärer Objekte:

Zerstörung am Ende der Ausdrucksauswertung

Temporäre Objekte werden nach Abschluss der Auswertung des vollständigen Ausdrucks zerstört sie wurden geschaffen. In diesem Beispiel werden die temporären Objekte für „eins“ und „drei“ nach den jeweiligen Zeilen, in denen sie sich befinden, zerstört.

Ausnahmen von der Regel

Bei temporärem Objekt Die Zerstörung folgt normalerweise dieser Regel, es gibt bestimmte Ausnahmen, wie in [class.temporary] p4-p7 beschrieben:

  1. Verkürzte Lebensdauer von Standardmäßig erstellte temporäre Objekte in Array-Initialisierern.
  2. Verkürzte Lebensdauer von Standardkonstruktorargumenten beim Array-Kopieren.
  3. Verlängerte Lebensdauer temporärer Objekte durch Bindung eines Verweises auf sie.
  4. Verlängert Lebensdauer temporärer Objekte in einem for-range-initializer.

Im bereitgestellten Beispiel keine dieser Ausnahmen gelten, sodass die temporären Objekte nach ihren jeweiligen Zeilen zerstört werden, was zur angegebenen Ausgabe führt.

Das obige ist der detaillierte Inhalt vonWann werden temporäre Objekte in C zerstört?. 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