Temporäre Objekte an Const-Referenzen zurückgeben
In C verlängert eine Referenz, die an ein temporäres Objekt auf dem Stapel gebunden ist, die Lebensdauer des temporären Objekts für die Dauer der Referenz selbst. Dies verhindert baumelnde Referenzfehler.
Betrachten Sie das folgende Beispiel:
<code class="cpp">string foo() { return string("123"); } int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
In diesem Code ist die von foo() zurückgegebene Zeichenfolge ein temporäres Objekt. Wenn es jedoch an den const-Referenzwert gebunden ist, wird die Lebensdauer des Temporärs bis zum Ende der Funktion main() verlängert. Dadurch kann val sicher auf den Inhalt der temporären Zeichenfolge zugreifen.
Der C-Standard erlaubt dieses Verhalten ausdrücklich, um häufige Dangling-Reference-Fehler zu vermeiden. Ohne sie würde die temporäre Zeichenfolge im obigen Beispiel am Ende der Funktion foo() zerstört werden, was dazu führen würde, dass val auf einen ungültigen Speicherort verweist.
Wichtiger Hinweis:
Diese Funktion gilt nur für stapelbasierte Referenzen. Die Lebensdauer temporärer Objekte, die Mitglieder von Objekten sind oder an anderen dynamischen Speicherorten gespeichert sind, wird dadurch nicht verlängert.
Das obige ist der detaillierte Inhalt vonWie stellen konstante Referenzen die Lebensdauer temporärer Objekte in C sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!