为什么可以重新设置参考参数?

Why a reference parameter can be re-seted?

为什么我不能重新设置引用的值,但如果引用是函数参数,我可以这样做?例如,下面的代码可以正常工作:

void foo(int& i)
{
}

int main()
{
    int i; foo(i);
    int j; foo(j);

    return 0;
}

这里没有'reference parameter re-set'。在您调用函数之前,函数引用形式参数甚至不存在,每次调用时都会有一个新的实际参数值,并且可能在堆栈上有一个新位置。每次调用该函数时,都会初始化一个 new 引用(作为实际参数值传递),就像在 [=11= 中使用 int &k = i; 一样] 你的例子。