1)在实际的程序中,引用主要被用做函数的形式参数:通常将类对象传递给一个函数。引用必须初始化。
2)一旦引用已经定义,它就不能再指向其他的对象。这就是为什么它要被初始化的原因。
3)const引用可以用不同类型的对象初始化(只要能从一种类型转换到另一种类型即可),也可以是不可寻址的值,如文字常量。例如
例子:
int main(){
double dval = 3.14159;
const int &ir = 1024; //仅对const引用才是合法的
const int &ir2 = dval; //仅对const引用才是合法的
const double &dr = dval + 1.0; //仅对const引用才是合法的
}
上面的例子中,同样的初始化对于非const引用是不合法的,将导致编译错误。原因有些微妙,需要适当做些解释。
引用在内部存放的是一个对象的地址,它是该对象的别名。对于不可寻址的值,如文字常量,以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际上指向该对象,但用户不能访问它。
4)不允许非const引用指向需要临时对象的对象或值,即,编译器产生临时变量的时候引用必须为const!!!!切记!!
5)const引用的这个const的语义
const引用表示,试图通过此引用去(间接)改变其引用的对象的值时,编译器会报错&#x