再谈C++里的引用
时间:2010-05-05 来源:flyfordream_h
1、&符号代表引用类型 可以是变量,函数参数,函数返回值
2、只读引用变量 const datatype & name 用于引用常量或者只读变量 ,无论引用哪种,都必须立即初始化
eg: const int & i =2; const int k = 10 ,const int & j =k;
同理
普通引用变量,用于引用普通变量,必须立即用普通变量的左值表达式初始化
挥发引用变量,用于引用挥发变量,必须立即用挥发类型变量的左值表达式初始化
3、引用和指针的区别
一、引用变量从一开始创建,就应该初始化,而指针则可以在使用之前任何时候初始化。
二、引用一旦被初始化,即建立了和被引用对象之间的关系,则这种引用关系不能改变,而指针(非只读类型指针)则可以随时改变它指向的对象,即指向不同的地址。
三、不能有NULL引用,即引用必须和实际的存储单元对应,而指针则可以是NULL。
4、对引用变量的操作,就是对被引用变量的操作,它们的值始终是一致的
eg:
int i=0;
int &x = ++++i; //++++i 为左值,x引用i
int &y = i = 4; //i=4为左值(赋值运算是左值表达式),y引用i
int &z = y = 8; //y=8为左值,z引用i
i = 3; // x=y=z=i=3
z = 12; //z=y=x=i=12
++y = 10; //左值++y使得i=13,并代表i,10赋值给i,使得z=y=x=i=10
(z=10)=15; //左值z=10使得i=10并代表i,15赋值给i,使得z=y=x=i=15
5、引用变量需注意:当
初始化条件得不到满足
表达式类型同引用类型不一致
局部引用变量引用了一个常量
编译程序就会临时生成类型相符的匿名变量,用表达式的值初始化匿名变量,然后用匿名变量初始化引用变量
相关阅读 更多 +