„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum kann ich in C++ R-Werte per Const-Referenz übergeben?

Warum kann ich in C++ R-Werte per Const-Referenz übergeben?

Veröffentlicht am 21.12.2024
Durchsuche:740

 Why Can I Pass Rvalues by Const Reference in C  ?

Bewahren von R-Werten mit Const-Referenzen: Ein C-Rätsel

In C ist die Übergabe von R-Werten (temporären Objekten) per Const-Referenz zulässig, im Gegensatz zu normalen Referenzen . Betrachten Sie das folgende Programm:

void display(const int& a) { cout 

Das Programm ermöglicht die Übergabe von L- und R-Werten an die Anzeigefunktion, auch wenn die Referenz als const markiert ist. Dieses Verhalten ist rätselhaft, da Konstantenreferenzen normalerweise mit der Beibehaltung von L-Werten verbunden sind.

Die Lebensdauerverlängerung von Const-Referenzen

Der Schlüssel zum Verständnis dieses Verhaltens liegt in der Semantik von const-Referenzen in C . Eine konstante Referenz verlängert die Lebensdauer des referenzierten Objekts bis zum Ende des enthaltenden Bereichs. Im Falle eines R-Werts verhindert dies effektiv die Zerstörung des temporären Objekts, bis die Konstantenreferenz den Gültigkeitsbereich verlässt.

Beispiel: Verlängerung der R-Wert-Lebensdauer

In unserem Folgendes geschieht beispielsweise, wenn display(5) aufgerufen wird:

  • Ein R-Wert vom Typ int wird mit dem Wert erstellt 5.
  • Eine konstante Referenz a ist an diesen R-Wert gebunden.
  • Die konstante Referenz verlängert die Lebensdauer des R-Werts bis zum Ende der Anzeigefunktion.
  • Der R-Wert ist Wird innerhalb der Funktion zum Drucken des Werts verwendet. 5.
  • Wenn die Anzeigefunktion zurückkehrt, verlässt die Konstantenreferenz den Gültigkeitsbereich und der R-Wert wird schließlich zerstört.

Dies zeigt, wie eine Konstantenreferenz weiterhin auf einen R-Wert verweisen kann, sodass dieser bestehen bleibt, auch wenn er andernfalls sofort zerstört würde.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3