Heim >Backend-Entwicklung >C++ >Wann werden temporäre Funktionsargumente in C zerstört?

Wann werden temporäre Funktionsargumente in C zerstört?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 09:42:12564Durchsuche

When Are Temporary Function Arguments Destroyed in C  ?

Temporäre Funktionsargumente: Zerstörungszeitpunkt

Beim Erstellen temporärer Objekte als Funktionsargumente ist die Verwaltung ihrer Lebensdauer für die Programmkorrektheit von entscheidender Bedeutung. C bestimmt die Lebensdauer dieser temporären Dateien.

Im bereitgestellten Beispiel:

class MyClass { MyClass(int a); };
myFunction(MyClass(42));

C garantiert, dass der Destruktor für das temporäre MyClass-Objekt am Ende des vollständigen Ausdrucks aufgerufen wird zu dem das Objekt gehört. Ein vollständiger Ausdruck endet normalerweise mit dem Semikolon; oder andere Anweisungsterminatoren. In diesem Fall endet der vollständige Ausdruck an der schließenden Klammer des Funktionsaufrufs myFunction().

Daher können Sie davon ausgehen, dass der Destruktor des temporären Objekts vor der Ausführung der nächsten Anweisung nach dem Funktionsaufruf aufgerufen wird .

Beachten Sie, dass eine Verlängerung der Lebensdauer von Provisorien über den vollständigen Ausdruck hinaus möglich ist, indem Sie sie an eine konstante Referenz binden. Dadurch wird ihre Lebensdauer auf die Lebensdauer der Referenz verlängert, wie im folgenden Beispiel dargestellt:

MyClass getMyClass();

{
  const MyClass& r = getMyClass(); // full expression ends here
  ...
} // object returned by getMyClass() is destroyed here

Das obige ist der detaillierte Inhalt vonWann werden temporäre Funktionsargumente in C zerstört?. 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