czytałem C++ Primer
i zauważyłem, że nie jest to stwierdzenie mówi:Czy można zdefiniować wskaźnik do odniesienia?
Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.
Ale ja po prostu napisał przykładowy kod i pokazuje, że jest to możliwe, aby utworzyć wskaźnik do odniesienia (zmienna d
).
Kod jest zamieszczona poniżej:
#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;
}
Więc coś nie tak z moim teście? Lub oświadczenie w C++ Primer
jest złe?
Czytam C++ Primer
piąte wydanie. Oświadczenie znajduje się na stronie 52, 2.3.2.
@taocp oops, edytowane :-) – yegle
Przełącz 'e' na' int & (* e) = d; 'i otrzymasz' error: nie można zadeklarować wskaźnika 'int &' 'z GCC. To sprawia, że całkiem jasne jest, że 'd' nie jest wskaźnikiem odniesienia. – chris
Pomyśl o referencji jako alias do oryginalnego obiektu. Referencje nie przydzielają, dealloc pamięci. Jak już wspomniano, możesz wskazać obiekt, do którego odnosi się nazwa aliasu, ale nic w pamięci nie reprezentuje samego aliasu (jest to tylko kod). Natomiast wskaźnik alokuje pamięć i przechowuje wartość (nawet jeśli ma wartość NULL). –