引用很容易与指针混淆,它们之间有三个主要的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
今天在网上看到有人对C++引用总结的三句话,一直都无法理解第二条,然后请教了同事 同事给我解释了终于明白了,这里记录下免得以后忘记,同时也是给不理解的同学解释下。
第一点:
int &a=NULL; //这种方式是不合法的必须写成 :
int b=3;
int&a=b;//这种方式才是合法的
第二点:
int b=3;
int c=4;
int &a=b;
&a=c;//第二点的意思是引用a一旦初始化后再不能重新指向另一个地址,所以这里是不合法的不能这么写,但是指针是可以的随便修改指向
a=c;//这种方式是合法的,表示的意思是修改了引用a所指向的地址的值,也就是修改了b变量的值,从3修改成4了。
第三点:
引用必须写成:
int b=3;
int &a=b;//合法
int &a;//不合法必须初始化要初始化
&a=b;//不合法