Heim >Backend-Entwicklung >C++ >Wie lange leben temporäre Funktionsargumente in C?
Verstehen der Lebensdauer temporärer Funktionsargumente
Bei Verwendung temporärer Objekte, die als Funktionsargumente instanziiert werden, wie unten veranschaulicht:
class MyClass { MyClass(int a); }; myFunction(MyClass(42));
Es ist entscheidend, das Verhalten ihrer Zerstörung zu verstehen. Der C-Standard bietet Einblicke in das Timing ihrer Destruktoren.
Zerstörungszeitpunkt temporärer Argumente
Temporäre Objekte erreichen ihr Ende am Ende des vollständigen Ausdrucks, den sie bewohnen. Ein vollständiger Ausdruck bezeichnet einen Ausdruck, der allein steht und nicht in einem anderen verschachtelt ist. Typischerweise entspricht dies dem Semikolon (oder der schließenden Klammer bei Bedingungs-, Schleifen- und Switch-Anweisungen), das den Abschluss der Anweisung kennzeichnet. Im gegebenen Beispiel endet der vollständige Ausdruck mit dem Funktionsaufruf.
Verlängerung der temporären Lebensdauer
Es ist bemerkenswert, dass die Lebensdauer von Provisorien verlängert werden kann, indem man sie als bezeichnet ständige Referenz. Diese Strategie verlängert ihre Lebensdauer, sodass sie mit der der Referenz übereinstimmt:
MyClass getMyClass(); { const MyClass& r = getMyClass(); // full expression ends here ... } // object returned by getMyClass() is destroyed here
Mit dieser Technik kann die Leistung optimiert werden, indem ein unnötiger Aufruf des Kopierkonstruktors im Vergleich zur Verwendung von MyClass obj = getMyClass(); vermieden wird. Allerdings ist die Prävalenz eher gering.
Das obige ist der detaillierte Inhalt vonWie lange leben temporäre Funktionsargumente in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!