Nicht-konstante L-Wert-Referenzen an unterschiedliche Typen binden
In C muss eine nicht-konstante L-Wert-Referenz an einen L-Wert desselben gebunden werden Typ. Dies kann verwirrend sein, wenn versucht wird, ein temporäres Objekt an eine nicht konstante Referenz zu binden, wie im folgenden Beispiel gezeigt:
int a; const double &m = a; // This is allowed double &m = a; // This produces an error
Der Fehler „Eine nicht konstante L-Wert-Referenz auf den Typ ‚double‘ kann nicht gebunden werden.“ auf einen Wert vom nicht verwandten Typ „int““ gibt an, dass eine Referenz eines nicht konstanten Typs nicht an ein Objekt eines anderen Typs gebunden werden kann.
Der Grund für diese Einschränkung ist folgender Ein temporäres Objekt kann nicht an eine nicht konstante Referenz gebunden werden. Wenn a in double konvertiert wird, wird ein temporäres Objekt erstellt. Als Ergebnis wird die folgende Codezeile angezeigt:
double &m = a;
Versuche, einen nicht konstanten Verweis an ein temporäres Objekt zu binden, was nicht zulässig ist.
Es gibt jedoch eine Ausnahme dazu Diese Regel in Visual Studio, wo eine Compilererweiterung das Binden nicht konstanter Verweise an temporäre Objekte ermöglicht. Dieses Verhalten ist jedoch nicht Standard und führt in anderen Compilern wie GCC zu einem Fehler.
Das obige ist der detaillierte Inhalt vonWarum können nicht konstante L-Wert-Referenzen nicht an unterschiedliche Typen in C gebunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!