分享
 
 
 

引用类型

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

(以下文章是我个人在学校开的一个《C++语义学》培训班里使用的讲义,没有作文字上的修饰,该讲义包括50多篇文章,大多采用实例的方式解释说明,看到有人问起这个问题,故将它发布出来。)

引用(reference)有时候又称为别名(alias),它可以作为对象的另一个名字。我们可以通过引用(对象的另一个名字)间接的操纵对象,它的使用方式类似于指针,但是不需要指针的语法。

定义方式:类型 & 变量 = 变量。如下图所示。

我们来直接看看它们的内存表现。

如上面所述的栈的表现技法。我们可知,如果引用(ref)只是变量(n)的别名的话,那么n和p自身的地址只能差别4个字节(32位机器)。可是现在看图可知,它们差8个字节。什么原因呢?

请注意0x001278 地址内容的变化(当前值是cccccccc)

接着向下执行.

地址ox001278的四个字节的内容变了,现在为7cff1200->即0012ff7c,即n的地址。

呵呵,你该知道,引用也是一个变量,它也占空间了吧。

只不过我么无法访问,编译器自动给我们分配的空间而已。

可是&ref 的显示却是和n的地址相同。

这只不过是C++障人耳目的伎俩而已!―――它要让你觉得使用对象的引用和使用对象本身没什么区别。

下面我们再来看看,使用引用。加入最后一行代码。

反汇编后成如下样子:

让我们来分析一下:

当前:EBP = 0012FF80

EBP – 8 = 0012FF78 (ref自身的地址)

EBP – 10h = 0012FF70 (Last的地址)

上面几行汇编的意思,大概你已经猜出来了(是啊,我也是猜出来的)。

1:将ref自身的地址传到EDX.

2:将EDX存放的地址的内容,传给EAX。

3:将EAX的内容传给Last。

这和指针又有什么区别呢?从反汇编状态来看看指针和引用不就知道了!

有区别吗?--没有。(从C++编译器实现和汇编代码的角度)

总结:

从内存中(我没有太好的名词)看引用和指针没什么区别。从编译器的角度来看,有很多不同,比如我们可以知道指针变量的地址(&p),却不能找到引用自身的地址,编译器让我们感觉(请注意这个词),对引用的操作好像对变量的操作一样直接。

注:对引用应用更深层次的讨论,将在函数和类的重载运算符,拷贝构造函数等部分。(我不会轻易放过吸引我的东西)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有