C++的引用本质上等同于C的指针
2024-09-26 10:53:52
本文给出一个很小的例子,通过反汇编后观察认为,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++的引用即别名,所谓别名,跟真实的变量名共享同一段内存空间,自然得按照指针的方式编译和使用。
最新文章
- Google Code Jam 2015 R2 C
- JAVA:NIO初步了解
- python eval
- 安装confluence
- 构建之法<;第四章>;之感悟
- poj 2923(状态压缩dp)
- Javascript中的数据类型之旅
- UVaLive 7374 Racing Gems (DP,LIS)
- C#_Fileuploadify_notMvc
- git workflows
- EXCEL表格常用函数使用的难点
- HDU_2028——求多个数的最小公倍数
- Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
- j2ee面试宝典翻译(3) j2ee job interview companion
- for循环,while循环,do while循环
- Linux环境GitLab安装与配置
- 第十一周(11.24-12.01)----final评论II
- 算法笔记_127:蓝桥杯2017模拟赛-本科组习题解答(Java)
- 如何构建ASP.NET MVC4&;JQuery&;AJax&;JSon示例
- Winfrom 桌面弹窗拦截 关闭进程简易程序 源代码下载
热门文章
- java 异步调用与多线程
- C#设计模式系列:代理模式(Proxy Pattren)
- Linux Centos下SQL Server 2017安装和配置
- TOMCAT在POST方法提交参数丢失问题
- kali linux之应用层Dos
- 洛谷P4254 [JSOI2008]Blue Mary开公司(李超线段树)
- [ActionScript 3.0] 通过BitmapData将对象保存成jpg图片
- ubuntu配置多网,网关不起作用的问题
- 2016级算法第五次上机-B.Bamboo&;APTX4844魔发药水
- Ubuntu14.04安装libusb