C ++,什么可能导致引用保存在内存中的方式不同

问题描述 投票:0回答:1

我正在阅读: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
}
c++ pointers reference alias
1个回答
0
投票

为什么编译器不能简单地将r的所有使用当作x [1]的别名]

[在某些情况下,因为x不在范围内,并且编译器不了解x。在这种情况下,“ x[1]的别名”没有意义。

引证中提到了此类情况的示例:

(例如数据成员或全局变量)

© www.soinside.com 2019 - 2024. All rights reserved.