c++ - 引用是否有存储位置?

标签 c++ reference language-lawyer memory-layout storage-duration

引用有存储位置还是只是另一个位置的别名?这是否因 C++ 版本而异,还是与所有 C++ 版本一致?如果一个引用有一个存储位置,那么它是否只允许像类型这样的指针上的值语义?

当你这样使用引用文献时,它是如何工作的:

struct aStruct{
   int aVariable;
   aClass& aReferencetoaClass;
};

是占用空间还是别名?

最佳答案

latest C++20 spec (§ 9.2.3.3)并且至少从 C++ 2005 draft spec 开始状态:

It is unspecified whether or not a reference requires storage

实际实现是根据具体情况而定的。显然,如果一个类有一个成员变量,它是一个需要存储在某处的引用。但是正如您所说,编译器在何时将引用单独用作别名时有回旋余地。

关于c++ - 引用是否有存储位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56836507/

相关文章:

javascript - 没有引用 DOM 对象

c++ - [class.union]/3中Note里的 "Absent default member initializers, ..."这句是什么意思?

c++ - 想不出这个自定义事件类的好名字

C# 等效于 c++ 中的 bool 运算符和 rhs

c++ - 在 vector 错误中从文件输入和输出数据?

c++ - 不同容器的包装器 contains() 函数

java - system.in 包含什么?

C++ : alternative for Vector of references to avoid copying large data

c++ - 使用 "auto"的声明是否匹配使用具体类型说明符的 extern 声明?

c++ - 在使用聚合初始化时是否可以在 map 中执行 no-copy emplace?