我知道引用不会占用任何内存,它会指向它所引用的同一内存位置。
例如
int i=10;
int &r = a;
suppose i
指向内存位置 1000 所以在这种情况下r
也将指向内存位置 1000。
但在 C++ 中,每当我们声明一个变量时,它都会存储在内存中的某个位置。
在这种情况下r
指向某个位置,但它应该通过某种内部表示存储在内存中的某个位置。
提前致谢。
这是有充分理由的,但没有具体说明。真正的答案是:这取决于参考。它可以表示为普通指针,也可能根本不存在。
如果您有一个具有自动存储持续时间的函数本地引用,例如这个r
:
void foo()
{
int x[4] = {0, 1, 2, 3};
int &r = x[1];
// more code
}
那么它可能根本不会占用任何空间。编译器将简单地处理所有使用r
作为别名x[1]
,并访问该int
直接地。请注意,这种别名样式的引用也可以由函数内联产生。
另一方面,如果引用是“持久的”或对其他翻译单元(例如数据成员或全局变量)可见,则它必须占用一些空间并存储在某处。在这种情况下,它很可能被表示为一个指针,并且使用它的代码将被编译以取消引用该指针。
理论上,其他选项也是可能的(例如查找表),但我认为任何现实世界的编译器都不会使用这些选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)