本文给出一个很小的例子,通过反汇编后观察认为,C++的引用本质上等同于C的指针

o foo1.cpp v.s. foo2.cpp

o 对foo1.cpp 和foo2.cpp进行编译

$ g++ -g -Wall -m32 -o foo1 foo1.cpp
$ g++ -g -Wall -m32 -o foo2 foo2.cpp

o 对foo1和foo2分别进行反汇编,然后保存到不同的文件,用meld进行diff

由此可见,使用C++的引用(int &p = n;)和C的指针(int *p = &n;)都对应于如下汇编代码:

 lea -0x8(%ebp), %eax  ; Load Effective Address of %ebp - 0x8, save to %eax
mov %eax, -0x4(%ebp) ; save %eax to [%ebp - 0x4]

一句话小结,C++的引用即别名,所谓别名,跟真实的变量名共享同一段内存空间,自然得按照指针的方式编译和使用。

最新文章

  1. Google Code Jam 2015 R2 C
  2. JAVA:NIO初步了解
  3. python eval
  4. 安装confluence
  5. 构建之法<第四章>之感悟
  6. poj 2923(状态压缩dp)
  7. Javascript中的数据类型之旅
  8. UVaLive 7374 Racing Gems (DP,LIS)
  9. C#_Fileuploadify_notMvc
  10. git workflows
  11. EXCEL表格常用函数使用的难点
  12. HDU_2028——求多个数的最小公倍数
  13. Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
  14. j2ee面试宝典翻译(3) j2ee job interview companion
  15. for循环,while循环,do while循环
  16. Linux环境GitLab安装与配置
  17. 第十一周(11.24-12.01)----final评论II
  18. 算法笔记_127:蓝桥杯2017模拟赛-本科组习题解答(Java)
  19. 如何构建ASP.NET MVC4&JQuery&AJax&JSon示例
  20. Winfrom 桌面弹窗拦截 关闭进程简易程序 源代码下载

热门文章

  1. java 异步调用与多线程
  2. C#设计模式系列:代理模式(Proxy Pattren)
  3. Linux Centos下SQL Server 2017安装和配置
  4. TOMCAT在POST方法提交参数丢失问题
  5. kali linux之应用层Dos
  6. 洛谷P4254 [JSOI2008]Blue Mary开公司(李超线段树)
  7. [ActionScript 3.0] 通过BitmapData将对象保存成jpg图片
  8. ubuntu配置多网,网关不起作用的问题
  9. 2016级算法第五次上机-B.Bamboo&APTX4844魔发药水
  10. Ubuntu14.04安装libusb