7. 临时变量的常量性
1. 临时变量的常量性
- 函数参数是 std::string&(非常量左值引用),但是你传进去的是一个 右值(临时对象,它具有 const 属性),编译器不允许这样绑定。
- “Hello” 是一个 string 类型的临时对象,具有 const 属性。将它传给非 const 的 string& 引用类型时,无法隐式得完成 const 到非 const 的类性转换。
2. 临时变量常量性的原因
如果一个实参是非 const 引用传入到函数中,编译器会认为这个实参会在函数中进行修改,并且函数返回后还会继续发挥函数处理之后的作用。但是,如果是临时变量单座非 const 引用参数传入,那么由于临时变量的特殊性,临时变量在函数中处理结束后,就会被释放,所以修改一个临时变量毫无意义,所以加上了临时变量不能作为非 const 引用实参的限制。