如果既要提高程序的效率,又要使传递给函数的数据不在函数中被改变,就应该使用常引用。常引用的声明方式是:
const 类型标识符& 引用名 = 目标变量名;
用这种方式声明的引用,不能通过引用对目标变量的值进行修改,在程序中使引用的目标成为const类型,从而保证了引用的安全性。
假设有如下函数声明:
string func1();
void func2 (string &s);
//那么下面的表达式都是非法的:
func2 (func1);
func2( "hello" ) ;
原因在于func1()和 "hello"都将产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此,上面的表达式就是试图将一个const类型的对象转化为非const类型,这是非法的。
引用型参数应该在能被定义成const的情况下,尽量定义为const.
原文:https://www.cnblogs.com/Ivessas/p/14655203.html