Heim  >  Artikel  >  Backend-Entwicklung  >  Warum können nicht konstante Referenzen in C nicht an L-Werte verschiedener Typen gebunden werden?

Warum können nicht konstante Referenzen in C nicht an L-Werte verschiedener Typen gebunden werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-23 04:30:20699Durchsuche

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

Nicht-konstante Referenzen an L-Werte verschiedener Typen binden

In C kann eine nicht-konstante L-Wert-Referenz (&) nicht gebunden werden ein L-Wert eines anderen Typs, wie das folgende Beispiel zeigt:

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

Dies liegt daran, dass Nicht-konstante Referenz m versucht, eine Bindung an ein temporäres Objekt herzustellen, das während der Zuweisung erstellt wurde. Nicht-konstante Referenzen können nicht an temporäre Referenzen gebunden werden.

Betrachten Sie jedoch das folgende Beispiel:

const double &m = a; // Valid

In diesem Fall bindet die konstante Referenz m an einen nicht-konstanten L-Wert und der Die Konvertierung von int nach double ist zulässig. Dies liegt daran, dass die konstante Referenz den zugrunde liegenden Wert vor Änderungen schützt und so die Möglichkeit einer Datenbeschädigung ausschließt, die durch die Bindung einer nicht konstanten Referenz an einen temporären Wert entstehen könnte.

Wenn Sie also versuchen, eine nicht konstante Referenz zu binden, Wenn Sie einen konstanten Verweis auf einen L-Wert eines anderen Typs verweisen, tritt ein Fehler auf, da nicht konstante Verweise nicht an Temporäre gebunden werden können.

Das obige ist der detaillierte Inhalt vonWarum können nicht konstante Referenzen in C nicht an L-Werte verschiedener Typen gebunden werden?. 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