Я не вижу причин, по которым j
не напечатает 20
во втором cout
.
Я запустил этот код:
int main() {
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:20 j:10
return 0;
}
И он дал мне такой вывод:
i=10 j:10
i=20 j:20
Посмотрите онлайн-демонстрацию самостоятельно: http://ideone.com/ELbNa
Это означает, что либо у компилятора, с которым вы работаете, есть ошибка (что является менее вероятным случаем, потому что это самая базовая вещь в C ++), либо вы неправильно видели вывод (что, скорее всего, имеет место).