int x = 2;
int y = x;
int &z = x;
Собственно, буду краток: почему переменной y присваивается значение переменной х, а z - её ссылка ? В с++ существует какое-то скрытое преобразование со стороны оператора присваивания, и в случае с переменной y, он присваивает ей значение, полученное по адресу, ассоциированному с х, а в случае с &z - сам адрес ? Буду рад любой качественной литературе на эту тему.
Скорее наоборот.
x является адресуемым выражением, lvalue. Когда вы инициализируете другую переменную, то lvalue «понижается» до значения, rvalue, и это самое значение присваивается другой переменной. А вот когда вы инициализируете ссылку, то lvalue как раз для неё и нужно, и оно берётся без понижения.
Заметьте, что у вас речь идёт не о присвоении, а именно об инициализации. При присвоении ссылке снова необходимо значение, rvalue, и оно записывается в переменную, на которую ссылается ссылка.
int x = 2;
int y = 55;
int& z = x; // z - ссылка на x
z = y; // z всё ещё ссылка на x, значение x поменялось на 55
Это объяснение на пальцах. Более подробные объяснения есть в книжках, а уж совершенно точные (а также ужасно формальные и скучные) определения найдутся в стандарте.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости