Я читал C++ Primer
, и я заметил, что есть заявление говорит:Можно ли указать указатель на ссылку?
Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.
Но я просто написал пример кода, и показывает, что можно создать указатель на ссылку (переменная d
).
код размещен ниже:
#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;
}
Итак, все, что случилось с моим испытанием? Или заявление в C++ Primer
неверно?
Я читаю C++ Primer
пятое издание. Заявление приведено на стр. 52, 2.3.2.
@taocp oops, под редакцией :-) – yegle
Переключить 'e' в' int & (* e) = d; 'и вы получите' error: не можете объявить указатель на 'int &' 'из GCC. Это делает довольно очевидным, что 'd' не является указателем на ссылку. – chris
Подумайте о ссылке как псевдоним исходного объекта. Ссылки не выделяют, dealloc память. Как было указано, вы можете указать на объект, на который ссылается псевдоним, но в памяти нет ничего, чтобы представлять сам псевдоним (это только код). В отличие от этого указатель выделяет память и сохраняет значение (даже если значение равно NULL). –