1

如果 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 并且当 d = 1 时 r2 是对 d 的引用,为什么输出不是 1?此外,当 r1 = d 时,为什么输出也不是 1?

4

2 回答 2

0

引用就像解决原始项目一样。像 *(& some_variable)

因此,在您的代码中

r2 = r1;

将 的值设置为的d值。i0

从那时起,所有的价值观都是0

如果您将名称替换为r1andref_ir2ref_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;  
于 2013-10-03T03:46:47.113 回答
0

将引用视为对象的别名(替代名称)。无论您对引用做什么,您都对它所引用的对象进行操作。这里:

int i, &ri = i;

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

i = 5;

你设置 i = 5,在这里

ri = 10;

你设置 i = 10。

于 2013-10-03T04:00:46.170 回答