我不太明白为什么如果 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
的值设置为 0
的 i
的值。
从那时起,所有值都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;
将引用视为对象的别名(替代名称)。无论你对一个引用做什么,你都会对它所引用的对象做什么。这里:
int i, &ri = i;
你说 ri 是 I 的另一个名字。因此,在这里:
i = 5;
你设置 i = 5,这里
ri = 10;
您设置 i = 10。