Heim > Backend-Entwicklung > C++ > Warum können nicht konstante L-Wert-Referenzen nicht an unterschiedliche Typen in C gebunden werden?

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

Susan Sarandon
Freigeben: 2024-12-03 00:14:11
Original
1019 Leute haben es durchsucht

Why Can't Non-Const Lvalue References Bind to Dissimilar Types in C  ?

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

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