//参考《C++反汇编与逆向分析技术揭秘》
//在反汇编下,没有引用这种数据类型。
//在C++中,引用和指针没有分别,只是引用是通过编译器实现寻址的,而指针需要手动寻址。
//C++为了简化指针操作,对指针的操作进行了封装,产生了引用类型。引用类型在C++中被描述为变量的别名。实际上,引用类型就是指针类型,只不过它用于存放地址的内存空间对使用者而言是隐藏的。
----- -----------------------------------------------------------------
----------------------------------------------------------------------
C++对应的汇编代码:
//在反汇编下,没有引用这种数据类型。
//在C++中,引用和指针没有分别,只是引用是通过编译器实现寻址的,而指针需要手动寻址。
//C++为了简化指针操作,对指针的操作进行了封装,产生了引用类型。引用类型在C++中被描述为变量的别名。实际上,引用类型就是指针类型,只不过它用于存放地址的内存空间对使用者而言是隐藏的。
----- -----------------------------------------------------------------
- #include<iostream>
- using namespace std;
- struct Test
- {
- Test():a(1),b(2)
- {
- }
- int a;
- int b;
- };
- int main()
- {
- Test t;
- Test &x=t;
- return 0;
- }
C++对应的汇编代码:
- Test t;
- 00401038 lea ecx,[ebp-8]
- 0040103B call @ILT+10(Test::Test) (0040100f)
- 15: Test &x=t;
- 00401040 lea eax,[ebp-8]
- 00401043 mov dword ptr [ebp-0Ch],eax
- 16: return 0;
- 00401046 xor eax,eax