10

c我想知道这段代码中的引用变量是否如:

int a = 5;
int & c = a;

从堆或堆栈中分配。任何人都可以帮忙吗?谢谢

4

4 回答 4

17

引用只是一个别名,C++11 标准未指定它是否需要实际存储。

根据 C++11 标准的第 8.3.2/4 段:

未指定引用是否需要存储 (3.7)。

于 2013-03-18T20:16:54.953 回答
4

引用只是别名,不必特别分配到任何地方。该标准没有指定这种细节,甚至根本不需要引用有任何存储空间。

于 2013-03-18T20:17:22.490 回答
2

没关系,引用只是一个常量自动取消引用的指针,没有指针算术,也没有空值或不确定值的选项。

关于重新制定的问题 - 使用引用的方式意味着它们将主要是堆栈分配的。那是在所有非静态场景中,它们的存储不能省略。这就是 C++,一种高性能的编程语言,它忽略了任何没有被使用的东西。

于 2013-03-18T20:18:38.573 回答
0

大多数编译器将引用视为受限指针。

于 2013-03-18T20:21:52.833 回答