C++的常量引用
如果是对一个常量 进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就 是对该临时变量的操作。对常量的引用可以用其它任何引用来初始化;但不能改变 。
关于引用的初始化有两点值得注意:
(1 )当初始化值是一个左值(可以取 得地址)时,没有任何问题;
(2 )当初始化值不是一个左值时,则只能对一个 const T& (常量引用)赋值。而且这个赋值是有一个过程的:
首先将值隐式转换到类型 T ,然后将这个转换结果存放在一个临时对象里,最后用这个临时对象来初始化这个引用变量。
也就是说当定义函数为
foo(int &a);
bar(const int&b);
我们可以用
int x=9;
foo(x);
但是不能用foo(9);
而我们既可以用bar(x);
也可以用bar(9);
另外const的应用必须极为注意,如果一个函数不会修改类的成员,最好将const放在该函数最后。