Heim >Backend-Entwicklung >C++ >Wie lange sind temporäre Funktionsargumente gültig?
Lebensdauer temporärer Funktionsargumente
Beim Erstellen eines temporären Objekts als Argument für eine Funktion garantiert der Standard, dass sein Destruktor aufgerufen wird am Ende des vollständigen Ausdrucks, der den Funktionsaufruf enthält.
Detaillierte Beschreibung Erläuterung
Temporäre Objekte werden erstellt, wenn ein Funktionsargument ein Ausdruck ist, der ein Objekt ergibt. Im bereitgestellten Beispiel ist MyClass(42) ein temporäres Objekt.
Die Lebensdauer temporärer Objekte erstreckt sich bis zum Ende des vollständigen Ausdrucks, zu dem sie gehören. Ein vollständiger Ausdruck endet normalerweise mit dem Semikolon (`;), das die Anweisung abschließt, die den Ausdruck enthält. In diesem Fall endet der vollständige Ausdruck mit der schließenden Klammer des Funktionsaufrufs von myFunction().
Daher wird der Destruktor des in MyClass(42) erstellten temporären MyClass-Objekts aufgerufen, bevor die Ausführung mit fortfährt nächste Anweisung nach dem Funktionsaufruf.
Verlängerung der temporären Lebensdauer
Während temporäre Objekte dies im Allgemeinen tun Obwohl sie nur von kurzer Dauer sind, kann ihre Lebensdauer verlängert werden, indem man sie an eine konstante Referenz bindet. Zum Beispiel:
const MyClass& r = getMyClass();
In diesem Fall bleibt das von getMyClass() zurückgegebene temporäre Objekt bis zum Ende des umschließenden Blocks bestehen und verlängert so seine Lebensdauer über den vollständigen Ausdruck hinaus.
Das obige ist der detaillierte Inhalt vonWie lange sind temporäre Funktionsargumente gültig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!