ich C++ Primer
las, und ich bemerkte, dass eine Aussage gibt es sagt:Ist es möglich, einen Zeiger auf eine Referenz zu definieren?
Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.
Aber ich schrieb nur ein Beispiel-Code und zeigt, dass es möglich ist, einen Zeiger auf eine Referenz (die d
Variable) zu erstellen.
Der Code ist unten geschrieben:
#include <iostream>
using namespace std;
int main(){
int a = 1024;
int &b = a; // a reference to int
int &c = b; // a reference to another reference
int *d = &b; // a pointer to a reference
int *(&e) = d; // a reference to a pointer
a = 100;
cout << b << endl;
cout << c << endl;
cout << *d << endl;
cout << *e << endl;
}
So etwas falsch mit meinem Test? Oder ist die Aussage in C++ Primer
falsch?
Ich lese C++ Primer
fünfte Ausgabe. Die Erklärung befindet sich auf Seite 52, 2.3.2.
@taocp oops, bearbeitet :-) – yegle
Schalten Sie 'e' auf' int & (* e) = d; 'und Sie erhalten' error: kann den Zeiger nicht auf 'int &' 'von GCC deklarieren. Das macht es ziemlich klar, dass "d" kein Zeiger auf eine Referenz ist. – chris
Stellen Sie sich eine Referenz als Alias für das ursprüngliche Objekt vor. Referenzen nicht zuordnen, Dealloc-Speicher. Wie bereits erwähnt, können Sie auf das Objekt zeigen, auf das der Aliasname verweist, aber es gibt nichts im Speicher, um den Alias selbst darzustellen (nur im Code). Im Gegensatz dazu weist ein Zeiger Speicher zu und speichert einen Wert (selbst wenn der Wert NULL ist). –