Heim >Backend-Entwicklung >C++ >Wie lange leben temporäre Funktionsargumente in C?

Wie lange leben temporäre Funktionsargumente in C?

DDD
DDDOriginal
2024-12-27 07:06:17944Durchsuche

How Long Do Temporary Function Arguments Live 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!

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