Heim >Backend-Entwicklung >C++ >Wie lange sind temporäre Funktionsargumente gültig?

Wie lange sind temporäre Funktionsargumente gültig?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 19:20:10533Durchsuche

How Long Do Temporary Function Arguments Live?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn