引用与指针的比较
来源:互联网 发布:虚拟机安装mac系统 编辑:程序博客网 时间:2024/04/30 00:41
引用的语法
l 引用必须在定义的同时初始化
int i;
int & j; // 错误,没有初始化。
int & k=i; // 正确
这个例子有个很好的比喻,小时候小朋友间会互相起“外号”,这些外号在产生的时候总是有所指的,即针对一个具体的小朋友的。引用也一样,定义的时候,必须指明它是谁的别名。
l 外部(extern)引用定义不必给出初值
extern int & i; //正确,不必给出初值
l 引用初始化后不能再使其成为其它变量的引用
int j, k;
int & i = j;
i = k; // 错误,不能更改!
引用类似一个常量指针(int * const p),不能修改引用的指向。
l 引用的地址
假设有如下定义:
int j;
int & i = j;
那么,&i应该是什么呢?是一个“引用的地址”么?答案是:no。&i = &j,就是j这个变量的地址。
引用和指针的比较
(1)引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值。
(2)不存在NULL引用,引用必须与合法的存储单元关联;而指针则可以是NULL。
(3)引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用;而指针在任何时候都可以改变为指向另一个对象.给引用赋值并不是改变它和原始对象的绑定关系。
(4)引用的创建和销毁并不会调用类的拷贝构造函数。
(5)在语言层面,引用的用法和对象一样;在二进制层面,引用一般都是通过指针来实现的,只不过编译器帮我们完成了转换。
总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性。
- 指针与引用的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 指针与引用的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- 引用与指针的比较
- shell下数字和字符串比较操作命令
- Android.mk
- Java对象的强引用、软引用、弱引用和虚引用
- 使用递归拷贝文件
- Php设计模式之【模板方法模式Template Method Pattern 】
- 引用与指针的比较
- How to Perfectly Uninstall Norton AntiVirus 2012
- DAO类
- Linux2.6进程
- VC常用代码
- 双缓冲法解决重绘和闪屏问题
- KFWITM220E
- DarkComet Analysis – Understanding the Trojan used in Syrian Uprising
- tizen v1.0源码下载