Heim > Artikel > Backend-Entwicklung > Warum können nicht konstante Referenzen in C nicht an L-Werte verschiedener Typen gebunden werden?
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!