Один из способов взглянуть на это - переместить ссылочный знак с
int &R = x;
на
int& R = x;
R
- это int&
- ссылка на int
, что означает, что R
не освободит память, выделенную x
, когда R
выйдет из области видимости, но это будет ссылка на x
, пока x
живет.Настоящим объявляется R
, и его объявление не может быть изменено, поэтому, если вы попытаетесь:
<type declaration> R = <value>
, оно должно завершиться неудачей - поскольку R
уже объявлено.
Но вы можете присваивать что-либо тому, что R
является ссылкой на
R = <value>
... до тех пор, пока value
тип может быть преобразован в тип, на который ссылается R
(0-1 преобразование операторов).