C++中引用的本质是什么?
来源:互联网 发布:linux 启动initramfs 编辑:程序博客网 时间:2024/05/17 04:03
一般的教材上讲到引用时,都是说“引用是对象的一个别名”。我认为这种定义是不清晰的,不利于初学者理解引用。至少我自己曾经被这个定义困扰了一段时间。到底什么是“别名”?
实际上,引用的实质是位于xxxxxx地址上的一个xxxx类型的对象。比如教科书上常用的例子:
int a = 5; //不妨假设编译器将a分配到0x400000
int &b = a;
这里面b的准确意义就是,放在0x400000地址上的一个int类型对象。这里面包括了两重含义,首先b是一个int类型对象,因此他的使用完全与 int类型对象一样。另外这个int类型对象的地址是0x400000,因此从底层来看,它具有指针的一些特性,无论你怎样传递,他都代表放在 0x400000的那个int.
在c++中,引用全部是const类型,定义之后不可更改。实际上“引用”对目标代码来说是不存在的,因为对于编译器来说,使用上例中的b就是使用 0x400000地址的那个int.引用一经定义,就不会指向别的地址,也不会指向别的类型,因此编译器不会专门开辟空间存储这个引用,而是将发送引用的地方替换为真正的地址,接收引用的地方则替换为接受指针。
在java中,数据对象也都是引用类型,但是这里的引用与C++有很大不同,他们不是const类型,可以指向一个空值,也可以随时更改其指向的内存地址。这实际上与C++中的指针概念完全对应。java中的引用实际上对应C++中的指针而非引用,只不过是省去了C++中指针的取地址(&)与取值(*)操作。
指针和引用的区别?
(1)引用在创建时必须初始化,指针可以不初始化,引用不可以为NULL指针可以。(2)不存在指向空值的引用,但是存在指向空值的指针。(3)引用初始化后不能被改变,指针可以改变所指的对象.
来源:http://c.chinaitlab.com/cc/basic/200905/783891.html
- 引用的本质是什么(c++,c#,java)?
- C++中引用的本质是什么?
- C++中引用的本质是什么?
- C++中引用的本质是什么?
- C++中引用的本质是什么?
- 引用的本质是什么
- 引用的本质是什么?
- 引用的本质是什么?
- C++ 引用的本质是什么?
- C++中引用的本质
- C++中引用的本质
- C++中引用的本质
- Android中Service的本质是什么?
- C++中endl的本质是什么
- C++中endl的本质是什么
- 关于Excel中单元格引用的本质
- 07--C++中引用的本质思考
- SOA的本质是什么?
- 运行时错误检查(/RTC)编译选项及实现原理
- Lucene学习笔记
- 基于mini2440的boa服务器移植
- HDU 1372 Knight Moves (BFS)
- scheme中序对与表的联系与区别
- C++中引用的本质是什么?
- matlab 常见的函数用法
- “错误:java找不到或无法加载主类(主方法)***”解决方法
- 数据库
- The import android.support cannot be resolved的解决方案
- 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列四之重启系统,系统设置
- c++面试题5
- Android 采用代码编写ui
- linux 重定向