64,682
社区成员
发帖
与我相关
我的任务
分享
cout<<"a1="<<a1<<endl;
009A1571 mov esi,esp
009A1573 mov eax,dword ptr [__imp_std::endl (9AA33Ch)]
009A1578 push eax
009A1579 lea ecx,[a1]
009A157C call A::operator int (9A101Eh)
009A1581 mov edi,esp
009A1583 push eax
009A1584 push offset string "a1=" (9A7800h)
009A1589 mov ecx,dword ptr [__imp_std::cout (9AA340h)]
009A158F push ecx
009A1590 call std::operator<<<std::char_traits<char> > (9A1159h)
009A1595 add esp,8
009A1598 mov ecx,eax
009A159A call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (9AA344h)]
009A15A0 cmp edi,esp
009A15A2 call @ILT+420(__RTC_CheckEsp) (9A11A9h)
009A15A7 mov ecx,eax
009A15A9 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (9AA324h)]
009A15AF cmp esi,esp
009A15B1 call @ILT+420(__RTC_CheckEsp) (9A11A9h)
从汇编码看出,先取endl的地址,push进栈,然后计算a1的int值(这时候会输出"[int]"),push进栈,最后取“a1=”的地址并push进栈。
而调用《操作符的时候是从左到右调用的。