难以理解引用定义

Trouble understanding reference definitions

本文关键字:引用 定义      更新时间:2023-10-16

我不太明白为什么如果 ri 是对 i 的引用,为什么它的输出是 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 = 1 时的参考,为什么输出不是 1? 另外,当 r1 = d 时,为什么输出不是 1?

引用

就像寻址原始项目一样。喜欢*(&some_variable)

因此,在您的代码中

r2 = r1;

d 的值设置为 0i 的值。

从那时起,所有值都0

如果将名称r1替换为ref_ir2 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;  

将引用视为对象的别名(替代名称)。无论你对一个引用做什么,你都会对它所引用的对象做什么。这里:

int i, &ri = i;

你说 ri 是 I 的另一个名字。因此,在这里:

i = 5;

你设置 i = 5,这里

ri = 10;

您设置 i = 10。