应该将不修改相应实参的形参定义为const引用,否则将会带来如下问题:
1.不能通过字符串字面值来调用该函数
2.若定义函数如下
1 int A(string &a){} 2 int B(const string &b) 3 { 4 A(b);//编译错误 5 }
则会引起编译错误。
3.引用传递右值也是不允许的
1 int A(int &a){} 2 int main() 3 { 4 short v1=0; 5 const int v2=42; 6 int v3=A(v1);//错误,v1不是int 7 v3=A(v2);//错误,v2是const 8 v3=A(0);//错误,非左值 9 v3=A(v1+v2);//错误,非左值 10 int v4=A(v3);//正确 11 }