In C ist das Zuweisen eines temporären Objekts zu einer konstanten Referenz eine häufige Operation, die zunächst Fragen zur Lebensdauer von aufwerfen kann das Temporäre.
Frage:
Warum ist der folgende Code gültig und führt nicht zu einem Compilerfehler?
<code class="cpp">string foo() { return string("123"); } int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
Antwort:
C definiert explizit, dass das Binden eines temporären Objekts an eine konstante, stapelbasierte Referenz die Lebensdauer des temporären Objekts verlängert, damit sie mit der der Referenz übereinstimmt. In diesem Szenario bleibt das von foo() zurückgegebene temporäre Objekt bis zum Ende der Funktion main() bestehen.
Erklärung:
Hinweis:
Das obige ist der detaillierte Inhalt vonWarum verlängert das Binden eines temporären Objekts an eine konstante Referenz seine Lebensdauer in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!