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 }      

 

你可能感兴趣的:(Const)