Heim > Backend-Entwicklung > C++ > Warum verlängern Const-Referenzen die Lebensdauer temporärer Objekte in C?

Warum verlängern Const-Referenzen die Lebensdauer temporärer Objekte in C?

Linda Hamilton
Freigeben: 2024-10-26 16:04:03
Original
941 Leute haben es durchsucht

Why Do Const References Extend the Lifetime of Temporary Objects in C  ?

Temporäre Objektlebensdauer mit Const-Referenzen verstehen

Einführung:

In C die Lebensdauer Die Dauer temporärer Objekte erstreckt sich normalerweise nur bis zum Ende des Ausdrucks, in dem sie erstellt wurden. Eine Ausnahme entsteht jedoch, wenn temporäre Objekte an konstante Referenzen gebunden sind und ihre Lebensdauer über den ursprünglichen Bereich hinaus verlängert.

Spezifische Anfrage:

Warum wird der folgende Code kompiliert und erfolgreich ausführen, obwohl die von der foo-Funktion zurückgegebene Zeichenfolge ein temporäres Objekt ist?

<code class="cpp">string foo() {
  return string("123");
}

int main() {
  const string& val = foo();
  printf("%s\n", val.c_str());
  return 0;
}</code>
Nach dem Login kopieren

Antwort:

Der C-Standard definiert explizit die Bindung eines temporären Objekts auf einen Verweis auf const im Stapel verlängert die Lebensdauer des Temporären bis zur Lebensdauer des Verweises selbst. Daher bleibt im bereitgestellten Code die von foo() zurückgegebene temporäre Zeichenfolge bis zur schließenden Klammer der Hauptfunktion am Leben.

Mechanismus:

Diese Funktion stellt dies sicher Verweise auf temporäre Objekte werden nicht zu baumelnden Verweisen, die zu undefiniertem Verhalten führen würden. Während das temporäre Objekt an die konstante Referenz gebunden ist, wird sein Speicher effektiv fixiert, sodass das Programm es weiterhin sicher verwenden kann.

Einschränkungen:

Es ist wichtig zu beachten dass diese Lebensdauerverlängerung nur für stapelbasierte Referenzen gilt. Im Gegensatz dazu verlängern Referenzen, die Mitglieder von Objekten sind, nicht die Lebensdauer temporärer Objekte.

Zusätzliche Informationen:

Eine ausführlichere Diskussion zu diesem Thema finden Sie unter GotW #88: Ein Kandidat für den „Most Important const“ von Herb Sutter.

Das obige ist der detaillierte Inhalt vonWarum verlängern Const-Referenzen die Lebensdauer temporärer Objekte in C?. 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