????fun()??????????????

32:   HowMany f(HowMany x) {
33:     x.print("x argument inside f()");
004015DB   push        offset string "x argument inside f()" (0046f030)
004015E0   lea         ecx??[ebp+0Ch]
004015E3   call        @ILT+575(HowMany::print) (00401244)
34:     cout << "Return From f()" << endl;
004015E8   push        offset @ILT+200(std::endl) (004010cd)
004015ED   push        offset string "Return From f()" (0046f01c)
004015F2   push        offset std::cout (0047ce98)
004015F7   call        @ILT+660(std::operator<<) (00401299)
004015FC   add         esp??8
004015FF   mov         ecx??eax
00401601   call        @ILT+480(std::basic_ostream<char??std::char_traits<char> >::operator<<) (004011e5)
35:     return x;
00401606   lea         eax??[ebp+0Ch]    ; [ebp+0C]?Temp???????
00401609   push        eax
0040160A   mov         ecx??dword ptr [ebp+8]   ; [ebp+8]?h2?????????ecx???h2????
0040160D   call        @ILT+0(HowMany::HowMany) (00401005) ; ?????????????????Temp???????????h2???????
00401612   mov         ecx??dword ptr [ebp-10h]
00401615   or          ecx??1
00401618   mov         dword ptr [ebp-10h]??ecx
0040161B   mov         byte ptr [ebp-4]??0
0040161F   lea         ecx??[ebp+0Ch]    ; ecx????Temp???????
00401622   call        @ILT+500(HowMany::~HowMany) (004011f9) ; ??????????????????Temp
00401627   mov         eax??dword ptr [ebp+8]   ; eax????h2???????
36:   }

???????????н??

???????????£?

????1??????h???ù?????

????2??????????“Entering f()”

????3???????f()????????????????????????Temp???????????????????????h???????????Temp??

????4??????f()???????????“return x”?????????????????????????Temp???????????h2?У??????h2 = f(h)???????

????5????f()????????????Temp??????????????????Temp????

????6?????f()????????main????????????????????h2???????????h

????----------------------------------------------------------------------------

???????????????“HowMany h2 = f(h);”??????????????????

????*****

????????f()???????????????????????Temp???????????????????????h???????????Temp?У?