C++引用是对象的别名,“是不占用内存的”——这句话是正确的,但也是不正确的。
我们先看一个程序
int main()
{
int x;
int* p = &x; *p = 2;
int& ref = x; ref = 4;
return 0;
}
它生成的汇编代码如下:
可以看到编译器还是给引用分配了一个内存,那为什么我们打印地址时编译器返回给的是同一个地址呢?
编译器在看到我们打印对象引用的地址时,会给我们转换成对象的地址,所以我们看到的是一样的。引用属于编译器的概念,在底层引用还是通过指针实现的!



