我到处都读到必须先初始化引用,然后再重新初始化。

为了测试我的理解,我编写了以下小程序。似乎我实际上已经成功地重新分配了引用。有人可以向我解释程序中实际发生了什么吗?

#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

int main()
{
    int i = 5, j = 9;

    int &ri = i;
    cout << " ri is : " << ri  <<"\n";

    i = 10;
    cout << " ri is : " << ri  << "\n";

    ri = j; // >>> Is this not reassigning the reference? <<<
    cout << " ri is : " << ri  <<"\n";

    getch();
    return 0;
}

代码编译良好,输出如我所料:

ri is : 5
ri is : 10
ri is : 9

最佳答案



不,ri仍然是对i的引用-您可以通过打印&ri&i并查看它们是相同的地址来证明这一点。

您所做的是通过引用i修改ri。之后打印i,您会看到的。

另外,为了进行比较,如果创建const int &cri = i;,则不允许您分配它。

关于c++ - 我们可以在C++中重新分配引用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9293674/

10-10 16:09