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!