返回引用的函数返回一个左值。因此,这样的函数可用于任何要求使用左值的地方:
char &get_val(string &strInput, string::size_type ix)
{
return strInput[ix];
}
int main()
{
string strTemp("a value");
cout << strTemp << endl; //prints "a value"
get_val(strTemp, 0) = 'A';
cout << strTemp << endl; //prints "A value"
return 0;
}
给函数返回值赋值可能令人惊讶,由于函数返回的是一个引用,因此这是正确的,该引用是被返回元素的同义词。
如果不希望引用返回值被修改,返回值应该声明为const:
const char&get_val(...
又如,下面程序段将数组aiTemp的各元素赋值为0:
int &get(int *piArray, int index)
{
return piArray[index];
}
int main()
{
int aiTemp[10];
for (int i = 0; i != 10; ++i)
{
get(aiTemp, i) = 0;
}
return 0;
}