const形参与非const形参

应该将不修改相应实参的形参定义为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 }      
原文地址:https://www.cnblogs.com/binger1990/p/2824574.html