Pat*_*shu 10
由于r是引用i,所有操作r都由编译器转换为操作i.这样做&r,给你内存地址i.
(请注意,与指针不同,引用具有在声明后不被"重新引用"的属性 - 它们总是引用相同的东西 - 因此无法编写对引用进行操作的操作,而不是"引用的内容" ")
C++11§8.3.2/ 4
It is unspecified whether or not a reference requires storage.
Run Code Online (Sandbox Code Playgroud)
通过声明左值引用(T&),可以为现有内存位置创建概念别名.编译器可以使用"似乎"规则来按照自己的意愿对其进行处理.它可能会创建一个指针,它可能只是直接访问内存,但你不应该关心它将如何实现.
您正在阅读的PDF描述了左值引用的可能实现,但在一般情况下是错误的.左值引用的良好思维模型将为同一变量赋予第二个名称,因此您可以通过几个不同的名称(和范围)访问相同的数据.
此外,您不能获取rvalue的地址或创建指针,但您可以创建一个rvalue引用.