我正在阅读:Where does the reference variable gets stored
关于引用被保存到内存中的方式,我得出了公认的答案,它说:
另一方面,如果引用是“持久的”或对其他翻译单位(例如数据成员或全局变量),它必须占用一些空间并存储在某个地方。在这种情况下将最有可能被表示为指针,并且使用它的代码将编译以取消引用该指针。
有人可以详细说明这一点吗?为什么编译器不能简单地将r
的所有使用作为x[1]
的别名,并直接访问该int。 (以下函数foo()
就是这种情况)
void foo()
{
int x[4] = {0, 1, 2, 3};
int &r = x[1];
// more code
}
为什么编译器不能简单地将r的所有使用当作x [1]的别名]
[在某些情况下,因为
x
不在范围内,并且编译器不了解x
。在这种情况下,“x[1]
的别名”没有意义。
引证中提到了此类情况的示例:
(例如数据成员或全局变量)