概念
引用的简单概念: 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
引用一般被使用做参数/返回值这样可以提高效率, 减少拷贝。
底层实现
在语言层面引用是一个对象的别名不占据空间, 但是实际上在底层的实现上引用是类似于指针实现的。
我们借助代码进行探索
int i=5;
int &ri=i;
ri=8;
通过:调试->窗口->反汇编
int i=5;
00A013DE mov dword ptr [i],5 //将文字常量5送入变量i
int &ri=i;
00A013E5 lea eax,[i] //将变量i的地址送入寄存器eax
00A013E8 mov dword ptr [ri],eax //将寄存器的内容(也就是变量i的地址)送入变量ri
ri=8;
00A013EB mov eax,dword ptr [ri] //将变量ri的值送入寄存器eax
00A013EE mov dword ptr [eax