int &a = 100;//不能引用右值,因为右值没有内存。错误的表达式
//改正方法是,使用const int & c = 10;
//原因是在编译器中,会产生临时量保存10
//然后对临时量地址进行引用
/*
汇编代码:
const int& a = 100;
00BA5D98 mov dword ptr [ebp-18h],64h//100赋值到临时量
00BA5D9F lea eax,[ebp-18h]//地址赋值到eax寄存器
00BA5DA2 mov dword ptr [a],eax//引用临时量的地址
*/
//在内存地址0x0018ff44写一个整数,10
int *const &p = (int*)0x0018ff44;//地址也是一个右值,没有内存
*p = 10; //必须使用常引用
常引用的编译器实现原理
最新推荐文章于 2023-08-23 22:59:52 发布