看到这里的问题?函数是试图返回一个参考值,将超出范围时,该函数将返回。这意味着调用方接收参考垃圾。幸运的是,你的编译器将如果你尝试这样做,给你一个错误。
引用返回通常用于引用返回的函数返回给调用者传递参数。在下面的例子中,我们返回(参考)的阵列,通过引用传递给函数的元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// This struct holds an array of 25 integers
struct FixedArray25
{
int anValue[25];
};
// Returns a reference to the nIndex element of rArray
int& Value(FixedArray25 &rArray, int nIndex)
{
return rArray.anValue[nIndex];
}
int main()
{
FixedArray25 sMyArray;
// Set the 10th element of sMyArray to the value 5
Value(sMyArray, 10) = 5;
cout << sMyArray.anValue[10] << endl;
return 0;
}
他的指纹:
5
我们把值时(smyarray,10),value()返回一个参考的内部smyarray阵列第十元素。main()然后使用这些参考指定元素的值5。
虽然这是有点做作的例子(因为你可以直接访问smyarray.anvalue),一旦你了解课程你将发现更多的用途,通过引用返回值。
返回地址
返回的返回地址到地址的变量来调用。就像通过地址,返回地址只能返回一个变量的地址,而不是文字或表达式。喜欢引用返回,返回地址的快。然而,与引用返回,返回的地址不能返回局部变量: