我想知道这段代码中的引用变量(例如c
)是否:
int a = 5;
int & c = a;
内存分配可以来自堆或栈。有人能帮忙吗?谢谢。
我想知道这段代码中的引用变量(例如c
)是否:
int a = 5;
int & c = a;
内存分配可以来自堆或栈。有人能帮忙吗?谢谢。
引用仅是别名,至于它是否需要实际存储未被C++11标准指定。
根据C++11标准第8.3.2/4段:
是否需要引用存储空间(3.7)未经指定。
引用只是别名,不必在特定位置分配。标准没有指定这种细节,甚至不要求引用具有任何存储。
无论如何,引用只是一个自动取消引用指针的常量,没有指针算术运算和空或不确定值的选项。
关于重新制定的问题 - 引用的使用方式暗示它们将主要被堆栈分配。在所有非静态场景中,它们的存储都不能被省略。而这就是C++,一种高性能的编程语言,它省略了任何未被使用的东西。
大多数编译器将引用视为受限制的指针。