C++中的引用

C++中的引用
 
以下所有代码均在VC6.0得到,源代码:
 int i = 10;
 int &j = i;
 int *p = &i;
 *p = 100;
 j = 100;
 
汇编:
46:       int i = 10;
00438469   mov         dword ptr [ebp-58h],0Ah         //将10放到ebp-58h处
47:       int &j = i;
00438470   lea            eax,[ebp-58h]                            //eax 为ebp-58h
00438473   mov         dword ptr [ebp-5Ch],eax         //将eax移到j处(ebp-5Ch)
48:       int *p = &i;
00438476   lea            ecx,[ebp-58h]
00438479   mov         dword ptr [ebp-10h],ecx
49:       *p = 100;
0043847C   mov         edx,dword ptr [ebp-10h]
0043847F   mov         dword ptr [edx],64h
50:       j = 100;
00438485   mov         eax,dword ptr [ebp-5Ch]        //将j的值移到eax中
00438488   mov         dword ptr [eax],64h                //将100移到ecx所存储的地址,也就是i中
 
结论:
         可以看到,指针和引用产生的代码基本相同, 所以对于编译器来说, 引用就是指针. 但指针与引用的语意又不相同, 比如我们声明一个类对象的引用, 就只能通过"."运算符来访问对象的成员
  
为什么C++要引入引用:
         首先声明只是个人想法. 当我们实现一个运算符重载时, 都需要返回一个*this, 以支持这样的操作X+X1+X2+X3, 若过没有引用的话, 我们只能返回指针, X+X1+X2+X3可能要写成  *(*(X+X1)+X2)+X3这种形式了, 所以引用的引入,使代码更符合习惯. 当然引用也可以提高效率.
 
对象基于栈和堆的C++,要比对象基于堆的delphi在操作上要复杂一些
 
 
   
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值