关于c++引用(函数实参和形参)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39642794/article/details/80241492

图中有一处错误 函数 形参1 是free_throws &target

 对于函数调用2,如果函数写成free_throws accumulate(形参1,形参2);会报错,没有加引用&

对于函数调用1,无论加还是不加,都不会报错。

我们的解释是:在调用2中,对于实参1,在free_throws (不加&)accumulate(形参1,形参2)情况下,他返回的是team的副本,是一个右值,

所以对于左值引用,右值不能传给左值的(左值指的是可以取地址的变量(变量,数组元素,结构成员),记住,左值与右值的根本区别在于能否获取内存地址)。

左值对于变量引用,是一个变量的别名,无论是作为函数实参的传递 还是初始化,都应该是变量。所以aver(1),int &z=2(2是右值,正确应该是int &&z=2)都是不对的。


猜你喜欢

转载自blog.csdn.net/qq_39642794/article/details/80241492