/ / C ++: Warum können wir keine Verweise auf Referenzen oder ein Array von Referenzen haben? - C ++, Referenz

C ++: Warum können wir keine Referenzen auf Referenzen oder ein Array von Referenzen haben? - C ++, Referenz

Ich habe bemerkt, dass es keine Referenz auf die Referenz gibt, aber es gibt einen Zeiger auf den Zeiger, und es gibt auch kein Array von Referenzen, sondern ein Array von Zeigern.

Kann mir irgendjemand irgendeinen Grund geben?

Antworten:

15 für die Antwort № 1

Zeiger sind veränderbar (wenn nicht konstant), Referenzen nie. Daher hat es keinen Sinn, einen Zeiger oder eine Referenz auf eine Referenz zu haben.

Außerdem muss sich eine Referenz immer auf etwas beziehen- Es gibt keine Nullreferenz. Aus diesem Grund kann es keine Arrays von Referenzen geben, da es keine Möglichkeit gibt, Referenzen innerhalb eines Arrays auf einen sinnvollen Wert zu stanzen.


12 für die Antwort № 2

Es ist nach C ++ Standard 8.3.2 / 4:

Es darf keine Verweise auf Referenzen, keine Arrays von Referenzen und keine Verweise auf Referenzen geben.


10 für die Antwort № 3

Eine Referenz ist eine Abstraktion in der SpracheNiveau. Es ist eine undurchsichtige Möglichkeit, eine Variable in eine andere umzuwandeln. Während der Compiler unter der Haube Verweise mit Hilfe von Zeigern ausarbeitet, sind sie auf einer höheren Ebene sehr unterschiedliche Dinge. Andererseits werden Zeiger explizit von a benutzt Programmierer, um Indirection zu erreichen. Eine Zeigervariable ist eine unterschiedliche Variable von dem, auf das es gezeigt wird. Eine Referenz sollte so gedacht werden, als wäre sie einfach ein Alias ​​für die ursprüngliche Variable, nicht so, als ob es noch eine andere Variable wäre, die eine Adresse enthält. Folglich wäre ein Alias ​​für einen Alias ​​einer Variablen einfach ein Alias ​​für die Variable selbst. Betrachtet man die Bindung, kann eine Referenz auf eine Variable eine Kompilierungszeit sein, die helfen kann, die Gründe für dieses Verhalten zu verstehen.

Mit dieser Argumentation können Sie argumentieren, dass seitArrays sind Strukturen, die Werte speichern, keine Variablen, es ist nicht sinnvoll, dass sie Aliase von Variablen speichern können. Grundsätzlich eine Referenzvariable (womit ich den Zeiger meine, falls vorhanden, dass kann vom Compiler verwendet werden, um die Referenz zu verdrahten)ist für den Programmierer auf C ++ - Ebene unsichtbar. Wenn es möglich war, Arrays von Referenzen zu deklarieren, musste der Compiler wahrscheinlich konstante Indizes benötigen, die an die Arrays übergeben wurden, um die Bindung zur Kompilierungszeit auflösen zu können.


4 für die Antwort № 4

C ++ Standard 8.3.2 / 4:

There shall be no references to references, no arrays of references, and no pointers to references.

Der Grund dafür ist, dass eine Referenz zur Laufzeit an sich nicht existiert. Eine Referenz ist lediglich ein anderer Name für einen Ort. Sie sind unveränderlich.