如何用C++编码引用?

The*_*ere 13 c++ types reference

int x = 10;
int& y = x;
Run Code Online (Sandbox Code Playgroud)

为此,x在堆栈上分配为2/4/8字节,并将00 ... 1010写入这些字节.内存布局及其内容会是什么样的y

Nat*_*ica 28

来自C++ 11标准8.3.2.4 [dcl.ref]

未指定引用是否需要存储

所以它可能需要也可能不需要任何存储空间.


Ser*_*kov 14

让我引用http://en.cppreference.com/w/cpp/language/reference:

引用不是对象; 它们不一定占用存储空间,尽管如果有必要实现所需的语义,编译器可以分配存储空间(例如,引用类型的非静态数据成员通常会增加类的大小以存储存储器地址所需的数量)


stg*_*lov 5

从C ++的角度来看,它没有定义。

实际上,即使C ++具有许多不同的属性,编译器通常也以与指针完全相同的方式对待引用。这意味着所引用变量的地址是物理存储的。编译器可以做出的唯一假设可能是引用不为null。尽管如此,我认为如果不先获取指针,就无法访​​问C ++代码中引用变量中存储的地址。

请注意,编译器通常可以优化参考变量,因此您甚至无法说出它在程序集中的位置。它可以对指针变量执行相同的操作。