2.6.5 引用返回
C++(www.cppentry.com)中,在默认情况下,当函数返回一个值时:
expression被求值,并将该值拷贝到临时存储空间,以便函数调用者访问。我们将这种返回方式称为传值返回(return by value)。
例2-50
当调用如下函数
|
|
函数返回值还有另外一种形式,即引用返回(Return by Reference)。在这种情况下,返回值不再拷贝到临时存储空间,甚至连return语句所用的那个存储单元对调用者而言都是可访问的。引用返回的语法是在返回类型前加一个标记。
例2-51
由于函数
|
的返回类型为int&,因此是引用返回。当return语句执行后,调用者可以直接访问i。
例如,以如下方式调用函数val2:
|
例2-52
许多程序员习惯于从1开始的数组,如下函数可以实现访问从0开始的数组的方式来访问从1开始数组的目的。该函数以i为索引访问整型数组a,其中i从1开始,通过一个减1操作,函数内部实际上以C++(www.cppentry.com)方式(即从0开始索引)访问该数组。函数返回数组元素的引用:
|
上述语句执行后,-16被保存到数组a的第8个单元中。
因为使用引用返回的函数返回的是一个实际单元,必须保证函数返回时该单元仍然有效。
例2-53
函数
|
包含了一个错误。当f返回i时,i已经不存在了(因为i是局部变量)。因此,函数调用者不能访问传回的i。
如果改用传值返回,就没有上述错误:
|






