C++函数中返回引用和返回值的区别
转载地址: https://www.cnblogs.com/JMLiu/p/7928425.html 一、主要讨论下面两个函数的区别: int& at() { return m_data_; } int at() { return m_data_; } 上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,二者的区别是什么呢? 我们先用一个语句 const int& a = mymay.at(); 来分别调用一次上面两个函数,然后看汇编语言的结果。 反汇编结果: 1 #int& at() 2 #{ 3 # return m_data_; 4 #} 5 6 00BB6830 push ebp 7 00BB6831 mov ebp,esp 8 00BB6833 sub esp,0CCh 9 00BB6839 push ebx 10 00BB683A push esi 11 00BB683B push edi 12 00BB683C push ecx 13 00BB683D lea edi,[ebp-0CCh] 14 00BB6843 mov ecx,33h 15 00BB6848 mov eax,0CCCCCCCCh 16 00BB684D rep stos dword ptr es:[edi] 17 00BB684F pop ecx 18 00BB6850 mov