C++ 理解参考定义有困难

C++ 理解参考定义有困难,c++,reference,definitions,C++,Reference,Definitions,我不太明白,如果ri是对I的引用,为什么这个的输出是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 = r

我不太明白,如果ri是对I的引用,为什么这个的输出是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呢?

引用就像对原始项进行寻址一样。Like*&某个_变量

因此,在代码中

r2 = r1;
将d的值设置为i的值,即0

从那时起,所有值均为0

如果将名称r1替换为ref_i,将名称r2替换为ref_d,这将是有意义的

请在此处尝试:


将引用视为对象的别名或替代名称。无论你对引用做什么,你都要对引用的对象做什么。在这里:

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

i = 5;
你把i=5,在这里

ri = 10;

你设置了i=10。

你不能重新分配引用。但是如果r2=d,那么为什么r2=r1,1上的输出不是呢?在第一段代码中,ri是i的别名。@Tyler,在分配r2=r1之后,而r1=i,0,r2是0谢谢!那个网站非常有用!这里真正重要的是,具有良好命名约定的代码将使算法更易于编写、理解和调试,从而降低维护成本。
ri = 10;