Проблемы с пониманием эталонных определений

Я не совсем понимаю, почему вывод на это 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, а?

1

Решение

Ссылка аналогична обращению к оригинальному элементу. Подобно *(& some_variable)

В вашем коде поэтому строка

r2 = r1;

устанавливает значение d к стоимости i который 0,

с тех пор все значения 0

если вы замените имена r1 с ref_i а также r2 в ref_d это будет иметь смысл.

Попробуйте это здесь:

http://ideone.com/SHxQLN

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;
0

Другие решения

Думайте о ссылке как о псевдониме (альтернативном имени) объекта. Что бы вы ни делали со ссылкой, вы делаете с объектом, на который она ссылается. Вот:

int i, &ri = i;

Вы говорите, что ри это другое имя для меня. Таким образом, здесь:

i = 5;

Вы устанавливаете I = 5, а здесь

ri = 10;

Вы устанавливаете I = 10.

0

По вопросам рекламы [email protected]