C++学习笔记(2)之引用详解

引用就是对象的另外一个名字。在实际的程序中,引用主要用作函数的形式参数
下面用独立的对象来介绍并举例说明引用的用法:引用是一种复合类型,通过在变量名前面添加“&”符号来定义。复合类型是指用其他类型定义的类型。可以定义任何其他类型的引用,但是不能定义引用类型的引用,换句话来说就是引用初始化后不能引用其他引用。
1. 引用必须用与该引用同类型的对象初始化(引用一旦定义就要进行初始化,且初始化值不能为空,初始化是指明引用指向哪个对象的唯一方法)。
int a= 1024;//这里a为一个对象
int &b=a;// 对
int &c;//错,引用定义必须进行初始化
int &d=123;//错,初始化值必须是与该引用同类型的对象

2. 引用是别名
因为引用只是它绑定的对象的另外一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上:
上面例子中引用b表示,b和a是指向同一块地址空间的(b是a的另外一个名字),所以对b进行操作也就是对b绑定的对象a进行操作。再比如张三有一个外号叫张狗蛋,张三是a,引用b就是张狗蛋,其实张三和张狗蛋是同一个人。

3. 定义多个引用
可以在一个类型定义行中定义多个引用,注意:必须在每个引用标识符前添加“&”符号:
int i=10,i1=20;//
int &r=I,r1=i1;//r是一个引用,r1是一个int型
int i2=1024,&ri=i2;//定义一个对象,一个引用
int &r3=i2,&r4=i1;//定义两个引用

4. const引用
const引用是指向const对象的引用:
const int ival=123;
const int &refVal =ival;//可以,对象和引用都是const型的
int &ref2=ival;//不可以,非const引用对应一个const对象
---------------------------------------------------------------------------------------------------------------------------------
这里说一下const限定符:const把一个对象转换成一个常量,如:
const int bufSize=1024;定义bufSize为常量并初始化为1024.此变量仍然为一个左值,但是现在这个左值不能够被修改。任何修改bufSize的尝试都会导致编译错误:
bufSize=0;//error
因为常量在定义后就不能被修改,所以定义时必须初始化
---------------------------------------------------------------------------------------------------------------------------------
const引用可以初始化为不同类型的对象或者初始化为右值,这里与非const不同,如字面值常量
int i=42;//只有const是合法的
const int &r=42;
const int &r2 = r+i;
------------------------------
double dval=3.14;const int &ri=dval;
注意:非const引用只能绑定到与该引用同类型的对象

const引用则可以绑定到不同但相关的类型的对象或者绑定到右值。

关于引用作为参数进行传递的细节,可以看本博客上一篇文章 http://blog.csdn.net/baidu_32134295/article/details/53914792

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章