ri
не меняет то, на что оно указывает, оно меняет значение того, на что оно указывает. Поэтому, если вы напечатаете значение, если i1
, вы увидите, что теперь оно равно 0
, а если вы измените значение i2
, вы увидите, что оно не влияет на ri
:
int main() {
int i1 = 1, i2 = 0;
int& ri = i1;
ri = i2; // i1 == 0
std::cout << "i1 " << i1 << "\n";
i2 = 5;
std::cout << "i2 " << i2 << "\n";
}
И вывод
i1 0
i2 5