为什么我不能重新设置引用的值但是如果引用是函数参数我可以这样做?例如,以下代码可以正常运行:
void foo(int& i)
{
}
int main()
{
int i; foo(i);
int j; foo(j);
return 0;
}
答案 0 :(得分:1)
没有重新设置'参考参数'这里。在您调用函数之前,函数引用形式参数甚至不存在,每次调用它时都会有一个新的实际参数值以及堆栈上可能的新位置。每次调用该函数时,您都在初始化 new 引用(作为实际参数值传递),就像您在int &k = i;
中main()
一样示例