Из C++ Primer я понял, что когда я привязываю константную ссылку к неконстантному объекту, ссылка привязывается к временному объекту, значение которого является неконстантным объектом.
int a = 1;
const int &b = a;
a = 2;
std::cout<<b;
Как я понял, будет создан временный объект const int
со значением a
, и b
будет инициализирован с ним, так что как если бы я написал этот код:
int a = 1;
const int x = a;
const int &b = x;
a = 2;
std::cout<<b;
Первый код выводит 2, а второй — 1. Почему? Почему значение константной ссылки b
изменилось с изменением a
, тогда как на самом деле оно привязано к временному константному объекту, а не напрямую к a
?
const int
со значениемa
, иb
будет инициализирован с ним, так что, как будто я написал этот код Неверно. Никакое временное значение не задействовано.b
относится непосредственно кa
.b
МОЖЕТ ссылаться на временное (и продлит срок службы этого временного), но это не то, что здесь происходит. - person user4581301   schedule 19.03.2020std::cout<<b;
наstd::cout<<b<<"\n"; std::cout<<((a!=b)?a:b);
показывает, что происходит? - person C. R. Ward   schedule 19.03.2020