引用是一种复合类型(compound type),我们通常所说的引用为左值引用(lvalue reference),C++11中新增加了一种引用,叫做右值引用(rvalue reference),这种引用主要用于内置类中,稍后介绍,今天主要讲我们通常说的引用,也就是左值引用。
引用,其实是为对象另起一个名字。
- 通过&定义,当然引用定义的时候必须初始化
int &preValue = ival;
- 一般情况下引用的对象为变量、引用的类型与所引用的对象的类型必须一致
double &preValue = ival;// ival为int型
int &preValue = 1.0;
引用不同于赋值,它是将对象与引用绑定到一起,也可以这样理解一个对象有两个名字,不论用哪个名字改变,该对象都会发生变化
引用本身不是一个对象,所以不能定义引用的引用。
例如:上述例子中,ival = 2;则preValue 也为2;若执行preValue = 10;则此时使用ival,他对应的值也为10;
特殊情况下,可以不遵守引用的对象必须为变量,类型必须相同的规定,下面我们阐述这种特殊情况
使用引用常量的时候,
const double & ival= 1.9;
int ival = 4; const double &preValue = ival ;
以上两个例子都是正确的。但是,我们不能通过改变preValue的值今儿改变对象ival 的值
明确一点:const类型的变量,除了初始化的时候可以赋值,其余情况下不能通过“=”改变他的值