一直对”引用即别名“这个说法感到很困惑,所以想看看汇编代码来理解它的原理
C++源代码:
汇编代码如下:
movq %rsp, %rbp //rsp中是栈指针,把栈指针的值拷贝到rbp
movl $1, -12(%rbp) //把立即数1存入(rbp-12)处,(rbp-12)就是变量x的地址,栈是从高向低增长
leaq -12(%rbp), %rax //把x的地址拷贝到rax
movq %rax, -8(%rbp) //把x的地址拷贝到(rbp-8)处,(rbp-8)就是引用b的地址,存储的是x的地址
结论:从汇编代码中可以看出,引用占用内存空间,存储的是引用对象的地址,和指针的实现原理一样。