正在阅读:《编程高手箴言》读后(4)《编程高手箴言》读后(4)

2004-04-08 14:39 出处:CSDN 作者:seacloud 责任编辑:sdq

  void handle_2(struct A a)
  {
       a.a = 0x1234;
       a.b = 0x4321;
  }

  void handle_3(struct A& a)
  {
      a.a = 0x1234;
      a.b = 0x4321;
  }

  int main(int argc, char* argv[])
  {
      A a;
 
      handle_1(&a);      //传地址
             lea         eax,[ebp-8]
             push        eax
             call        @ILT+0(handle_1) (00401005)
             add         esp,4
      handle_2(a);       //传值
           mov         ecx,dword ptr [ebp-4]
           push        ecx
           mov         edx,dword ptr [ebp-8]
           push        edx
           call        @ILT+10(handle_2) (0040100f)
           add         esp,8
      handle_3(a);       //传引用
           lea         eax,[ebp-8]
           push        eax
           call        @ILT+5(handle_3) (0040100a)
           add         esp,4

      return 0;
  }

  大家看到了吧,传递移用和传递地址(结构的引用)在汇编后没什么不同,其实我们只要按照引用的定义去用,C++编译器会根据当时的上下文去解释的。

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品