Stavo leggendo C++ Primer
e ho notato che c'è una dichiarazione dice:È possibile definire un puntatore a un riferimento?
Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.
Ma ho appena scritto un codice di esempio e dimostra che è possibile creare un puntatore a un riferimento (la variabile d
).
Il codice è pubblicato qui di seguito:
#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;
}
Quindi, qualcosa di sbagliato con la mia prova? O la dichiarazione in C++ Primer
è errata?
Sto leggendo la C++ Primer
quinta edizione. L'affermazione è a pagina 52, 2.3.2.
@taocp oops, modificato :-) – yegle
Passa 'e' a' int & (* e) = d; 'e ottieni' errore: impossibile dichiarare il puntatore a 'int &' 'da GCC. Ciò rende abbastanza chiaro che 'd' non è un puntatore a un riferimento. – chris
Pensa a un riferimento come alias all'oggetto originale. I riferimenti non allocano, memoria dealloc. Come è stato fatto notare che si può puntare l'oggetto a cui fa riferimento il nome dell'alias, ma non c'è niente nella memoria per rappresentare l'alias stesso (è solo nel codice). Al contrario, un puntatore alloca la memoria e memorizza un valore (anche se il valore è NULL). –