2013-04-17 2 views
1

Почему ссылки не могут быть повторно инициализированы на C++, в то время как указатели могут быть повторно инициализированы?Почему ссылки не могут быть повторно инициализированы в C++?

int x=5; 
int y=6; 
int *p1; 
p1 = &x; 
p1 = &y; //re-initializing the pointer but same can not be done with references 
int &r1 =x;//can be initialized only once 
+0

См. Соответствующий вопрос http://stackoverflow.com/questions/1305055/reference-initialization-in-c – user1929959

+0

Очень короткий ответ: потому что если они где-то будут иметь точно дублированные функции указателя (измененное перенаправление) –

ответ

1

Нет очевидного синтаксиса. Вы не можете использовать обычный синтаксис =; который устанавливает значение основного указателя ссылки. Возможно, вы могли бы придумать такой синтаксис:

&my_reference = new_value; 

Но это странно и неудобно.

+0

Это невозможно в любой форме. '& variable' всегда является rvalue, а rvalues ​​не может быть левым операндом задания. – Nbr44

+0

@ Nbr44 Я думаю, вы имеете в виду rvalue, так как имя lvalue происходит от того, что оно обычно стоит на левой стороне задания. – Agentlien

+0

Ооооооооооооооооооол! Благодаря ! – Nbr44

Смежные вопросы