C++ 引用作为返回值&左值和右值的区别
C++ 引用
通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。
当函数返回一个引用时,则返回一个指向返回值的隐式指针。这样,函数就可以放在赋值语句的左边。例如,请看下面这的程序:
左值和右值
1、为什么element函数返回对象的引用?
这里返回实际上是一个数组元素,比如points.element(0),它是一个point这个object下标为0的元素。
我们访问一个数组,它需要是左值,例如a[2]=4,a[2]在赋值运算符左边,所以我们需要它是左值,而不带引用的函数返回的一个this.object,是一个对象临时副本,也就是右值。
结论:返回“引用”可以用来操作封装数组对象内部的数组元素。如果返回“值”则只是返回了一个“副本”,通过“副本”是无法操作原来数组中的元素的。
2、对左值和右值定义
左值:是指表达式结束后依然存在的持久对象,有内存地址的表达式,可以出现在等号的左边和右边
右值:指表达式结束时就不再存在的临时对象,没有内存地址的表达式,只能出现在等号的右边
左值和右值都是针对表达式而言的,显然右值不可以被取地址。
