Quindi, una variabile reference occupa lo stesso spazio in memoria di un puntatore? E, come un puntatore, contiene(in memoria) l'indirizzo della variabile a cui si sta "riferendo"?
No. La variabile reference occupa lo stesso spazio in memoria della variabile referenziata perché "è la variabile referenziata sotto falso nome. Il fatto che io li definisca puntatori mascherati è dovuto al fatto che i reference si comportano( ai fini pratici ) come dei puntatori (con qualche scomodità in meno).
Però se scrivi :
codice:
int p= 10;
int* q;
q = &p
q avra un proprio spazio all'interno dello stack e questo spazio esiste a prescindere da quello che gli verrà messo dentro. Ossia l'indirizzo di q non è l'indirizzo di p.
Quando scrivi:
codice:
int p = 10;
int& q = p;
q e p condividono lo stesso spazio all'interno dello stack. Ossia l'indirizzo di q è lo stesso di p.
Un pò come in una discussione parlare con una persona chiamandola un volta per nome e una per cognome.