首先如果引用作为函数参数,传递的实参不为函数需要的数据类型,这样是不被允许的
可以发现这个是不被允许的 ,报错的原因也写的很清楚,并且编译器也告诉了我们该怎么解决。
临时变量,引用参数和const
如果引用参数是const,编译器在下列情况下生成临时变量(数据类型为函数参数)
1.实参的类型正确,但不是左值(左值是可被引用的数据类型,包括变量,数组元素,结构成员,指针,非左值包括常量,和包含多项的表达式)
2.实参的类型不正确,但可以转为正确的类型(比如说上面的int 和long)
所以上面的的解决方法为
注意如果接受应用的函数意图是修改参数传递的变量,则创建临时变量将会阻止这种意图的实现。
所以如果函数不需要修改数据的话
尽量使用const
1.可以避免无意中 修改数据
2.使函数能够处理const和非const实参。
3.使函数能够正确生成并使用临时变量。