复合类型(1)——引用
C++语言有几种复合类型,介绍其中两种:引用和指针
本文介绍 引用
前言
对于初学者来说太难了(虽然不知道我为什么过了这么久还是初学者),上课的时候因为课程进度略过了,下来自己弥补一下。
引用简介
严格来说,当我们使用术语引用 时,指的其实是左值引用
引用即别名 :引用并非对象,它只是为一个已经存在的对象所起的另外一个名字。
定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。
引用必须初始化,且初始值必须为一个对象
正确定义如下:
int ival=1024;
int &refVal=ival;//refVal指向ival(是ival的另一个名字)
引用的应用
接上段代码
refVal=2;//把2赋给refVal指向的对象,此处即是赋给了ival
int ii=refVal;//与ii=ival执行结果一样
允许在一条语句中定义多个引用,其中每个引用标识符都必须以符号&开头
int &refVal3=refVal;//refVal3绑定到ival上
int i=refVal;//i被初始化为ival的值
int i=1024, i2=2048;
int &r=i,r2=i2;
注意:引用类型的初始值与引用定义类型相同
double dval=3.14;
int &refVal5=dval;//错误
例外情况
(1)const的引用
对常量的引用 :把引用绑定到const对象上
对常量的引用不能被用作修改它所绑定的对象
const int ci=1024;
const int &r1=ci;//引用及其对应的对象都是常量
允许为一个常量引用绑定非常量的对象、字面值,甚至是个一般表达式:
int i=42;
const int &r1=i;//允许将const int&绑定到一个普通int对象上
const int &r2=42;//r2是一个常量引用
int i=42;
int &r1=i;//引用r1绑定对象i
const int &r2=i;//r2也绑定对象i,但是不允许通过r2修改i的值
(2)存在继承关系的类
可以将基类的引用绑定到派生类对象上
当使用基类的引用时,实际上我们并不清楚该引用所绑定对象的真实类型。该对象可能是基类的对象,也可能是派生类的对象。
(持续更新中)