Heim >Backend-Entwicklung >C++ >Wie verlängern Const-Referenzen auf dem Stack die Lebensdauer temporärer Objekte in C?
Temporäre Objekte an Const-Referenzen binden
In C verlängert das Binden eines temporären Objekts an eine Referenz auf const auf dem Stapel dessen Lebensdauer der Referenz selbst. Diese Ausnahme von der Regel, dass temporäre Objekte normalerweise am Ende des umschließenden Ausdrucks ablaufen, ermöglicht mehr Flexibilität und Sicherheit im Umgang mit temporären Objekten.
Beachten Sie den folgenden Code:
<code class="cpp">string foo() { return string("123"); }; int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
Hier , wird von der Funktion foo() ein temporäres String-Objekt zurückgegeben. Typischerweise verschwindet dieses temporäre Element am Ende des vollständigen Ausdrucks, an dem foo() beteiligt ist. Durch die Bindung an den konstanten Referenzwert wird jedoch die Lebensdauer der temporären Zeichenfolge bis zur schließenden geschweiften Klammer verlängert.
Diese Abweichung von den üblichen Regeln für die temporäre Lebensdauer ermöglicht sichereren Code, der baumelnde Referenzen vermeidet. Im obigen Beispiel ist die Existenz der an val gebundenen temporären Zeichenfolge garantiert, solange val existiert.
Beachten Sie, dass diese Eigenschaft nur für Verweise auf const auf dem Stapel gilt. Die Lebensdauer temporärer Objekte, auf die durch Mitgliedsvariablen von Objekten verwiesen wird, wird dadurch nicht verlängert.
Weitere Informationen finden Sie in Herb Sutters GotW #88: A Candidate For the „Most Important const“, das hier verfügbar ist: https://www.gotw.ca/publications/mill19.htm.
Das obige ist der detaillierte Inhalt vonWie verlängern Const-Referenzen auf dem Stack die Lebensdauer temporärer Objekte in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!