反汇编->C++引用与指针
先看一段最简单代码
#include<iostream>#include<stdlib.h>using namespace std;int main(){int temp = 10;int *point = &temp;int &ref = temp;system("pause");}
反汇编结果
int temp = 10;012718E8 mov dword ptr [temp],0Ahint *point = &temp;012718EF lea eax,[temp] ;将temp变量的地址赋给eax012718F2 mov dword ptr [point],eax ;将eax的值赋给point指针int &ref = temp;012718F5 lea eax,[temp] ;将temp变量的地址赋给eax012718F8 mov dword ptr [ref],eax ;将eax的值赋给ref引用
从反汇编结果可知.其实引用的底层实现就是指针常量罢了.不过引用是指针常量(必须初始化.不能只声明).
指针可以被重新赋值而引用则总是指向最初或地的对象.指针跟引用一样可以改变
引用是有地址的,是一种编译器管理的指针,引用并不是只有一个别名,他其实说到底还是一个指针,只不过有些事情编译器替你做了而已
浙公网安备 33010602011771号