Garantierte Lebensdauer von Temporären in C
Wenn eine temporäre Variable innerhalb eines Funktionsaufrufs erstellt, aber nicht als Parameter verwendet wird, ist die C-Sprache gewährt eine lebenslange Garantie. Lassen Sie uns dieses Konzept in Bezug auf eine hypothetische Klasse namens StringBuffer untersuchen.
Im Beispiel der StringBuffer-Klasse wird ein temporäres StringBuffer-Objekt innerhalb des Methodenaufrufs Size() erstellt und an die Funktion GetString() übergeben. Es stellt sich die Frage, wann der Destruktor für dieses temporäre Objekt aufgerufen wird.
Gemäß dem C-Standard wird der Destruktor für solche temporären Objekte am Ende des vollständigen Ausdrucks aufgerufen. Dies bezieht sich auf den äußersten Ausdruck, der nicht Teil eines anderen Ausdrucks ist, was in diesem Fall auftritt, nachdem GetString() zurückgegeben und der Wert ausgewertet wurde. Daher bleibt das temporäre StringBuffer-Objekt während der gesamten Ausführung von GetString() gültig.
Dieses Verhalten ist für Techniken wie Ausdrucksvorlagen von entscheidender Bedeutung, da es Variablen ermöglicht, Verweise auf temporäre Objekte innerhalb komplexer Ausdrücke wie e = zu halten a b * c / d, um sicherzustellen, dass diese temporären Dateien gültig bleiben, bis der gesamte Ausdruck ausgewertet ist.
Das obige ist der detaillierte Inhalt vonWie lange lebt ein temporäres C-Objekt innerhalb eines Funktionsaufrufs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!