反汇编->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],0Ah
int *point = &temp;
012718EF lea eax,[temp] ;将temp变量的地址赋给eax
012718F2 mov dword ptr [point],eax ;将eax的值赋给point指针
int &ref = temp;
012718F5 lea eax,[temp] ;将temp变量的地址赋给eax
012718F8 mov dword ptr [ref],eax ;将eax的值赋给ref引用
从反汇编结果可知.其实引用的底层实现就是指针常量罢了.不过引用是指针常量(必须初始化.不能只声明).
指针可以被重新赋值而引用则总是指向最初或地的对象.指针跟引用一样可以改变
引用是有地址的,是一种编译器管理的指针,引用并不是只有一个别名,他其实说到底还是一个指针,只不过有些事情编译器替你做了而已