有关于此问题,但似乎有关迭代方案。我在这里遇到了不同的情况。参考定义和"重新分配"发生在相同的范围内。
#include <iostream>
using namespace std;
int main(void) {
int obja = 10, objb = 20;
int &r = obja;
cout << r << endl; // prints the 10
r = objb; // ???? re-assigning worked?
cout << r << endl; // prints the 20
return 0;
}
问题:
我错误地理解了什么?
答案 0 :(得分:5)
您正通过obja
将新值重新分配给r
新值恰好是objb
的值
这并没有将引用r
与objb
重新关联,我认为您可能会对似乎重新关联对新变量的引用的证明感到困惑。这不会发生。
您可以演示如果最后添加会发生什么,例如
cout << obja << " " << objb << endl;
答案 1 :(得分:2)
r = objb;
没有将 r 作为对 objb 的引用,只将 objb 的值分配给 r 即可。
尝试打印 r 和 objb 的地址,它会有不同的地址。
cout <<"address of r = "<<&r<<endl;
cout <<"address of objb = "<<&objb<<endl;
如果是参考,它会打印int &r = obja;
中的相同地址,因为 r 是 obja 的参考,两者都具有相同的地址地址。