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
Это объяснение на пальцах. Более подробные объяснения есть в книжках, а уж совершенно точные (а также ужасно формальные и скучные) определения найдутся в стандарте.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток, возникла следующая проблема: Нужно возвести в степень(n>30) число xc++ я только начал изучать, не будьте слишком строги,...
У меня есть файл прошивки для контроллера в формате S19 (SREC)Как я понял внутри файла есть чексуммы
Есть кроссплатформенная программа заказчика под Window/OsX/Linux - C++/Qt/QmlС линуксами возникает проблема линковки Qt с openssl