Я не совсем понимаю, почему вывод на это 10 10, если ри является ссылкой на я …
int i, &ri = i;
i = 5;
ri = 10;
std::cout << i << " " << ri << std::endl;
Может кто-нибудь прояснить это для меня?
Так же,
int i = 0, &r1 = i;
double d = 1, &r2 = d;
r2 = r1;
std::cout << r2; // output 0
i = r2;
std::cout << i; // output 0
r1 = d;
std::cout << r1; // output 0
Если i = r2 и r2 является ссылкой на d, когда d = 1, почему не вывод 1? Кроме того, когда r1 = d, почему не вывод 1, а?
Ссылка аналогична обращению к оригинальному элементу. Подобно *(& some_variable)
В вашем коде поэтому строка
r2 = r1;
устанавливает значение d
к стоимости i
который 0
,
с тех пор все значения 0
если вы замените имена r1
с ref_i
а также r2
в ref_d
это будет иметь смысл.
Попробуйте это здесь:
int i = 0, &ref_i = i;
double d = 1, &ref_d = d;
ref_d = ref_i; // <<-------------------- Put value of i into d
std::cout << ref_d;
i = ref_d;
std::cout << i;
ref_i = d;
std::cout << ref_i;
Думайте о ссылке как о псевдониме (альтернативном имени) объекта. Что бы вы ни делали со ссылкой, вы делаете с объектом, на который она ссылается. Вот:
int i, &ri = i;
Вы говорите, что ри это другое имя для меня. Таким образом, здесь:
i = 5;
Вы устанавливаете I = 5, а здесь
ri = 10;
Вы устанавливаете I = 10.