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

Wann genau werden temporäre C-Funktionsargumente zerstört?

Susan Sarandon
Freigeben: 2025-01-04 17:09:44
Original
286 Leute haben es durchsucht

When Exactly Do C   Temporary Function Arguments Get Destroyed?

Wann sterben temporäre Funktionsargumente?

Wenn in C ein temporäres Objekt als Argument für eine Funktion erstellt wird, wird der Compiler automatisch aktiviert verwaltet seine Lebensdauer. Dies wirft die Frage auf: An welchem ​​Punkt wird der Destruktor des temporären Objekts garantiert aufgerufen?

Gemäß dem C-Standard werden temporäre Objekte am Ende des vollständigen Ausdrucks, zu dem sie gehören, zerstört. Hier ist ein vollständiger Ausdruck ein Ausdruck, der kein Unterausdruck eines anderen Ausdrucks ist. Es endet normalerweise mit dem Semikolon (;) oder der schließenden Klammer () von Kontrollflussanweisungen (z. B. if, while, switch).

Im bereitgestellten Beispiel:

class MyClass
{
  MyClass(int a);
};

myFunction(MyClass(42));
Nach dem Login kopieren

Die Das als Funktionsargument erstellte temporäre MyClass-Objekt wird zerstört, nachdem die Funktionsaufrufanweisung endet, d. h. wenn das Semikolon angetroffen wird. Daher können Sie davon ausgehen, dass der Destruktor aufgerufen wird, bevor nachfolgende Anweisungen ausgeführt werden.

Es ist erwähnenswert, dass die Lebensdauer von Temporären mithilfe von Konstantenverweisen verlängert werden kann. Durch die Bindung eines Temporärs an eine konstante Referenz wird seine Lebensdauer verlängert, um der der Referenz zu entsprechen:

MyClass getMyClass();

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

Diese Technik kann unnötige Kopierkonstruktionen einsparen und gleichzeitig den von einer Funktion zurückgegebenen Wert beibehalten, insbesondere bei der Optimierung des Rückgabewerts ist nicht anwendbar. Mit dem Aufkommen der Bewegungssemantik in C 11 hat ihr Nutzen jedoch etwas abgenommen.

Das obige ist der detaillierte Inhalt vonWann genau werden temporäre C-Funktionsargumente zerstört?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage