我了解到,当您想在赋值运算符的left side上使用该函数时,它很有用。它还提到“当函数返回引用时,它返回指向其返回值的隐式指针”。但是,我对带有对变量的返回类型引用的函数的理解是,返回变量是该变量的别名。
来自returning-a-reference-from-a-function-in-c/
中的示例class DigInto
{
private:
int secret;
public:
DigInto() { secret = 150; }
int &GetSecretVariable() { return secret; }
void Write() { cout << secret << endl; }
};
主要功能如下:
int main(int argc, char *argv[])
{
DigInto inst;
inst.Write();
int &pry = inst.GetSecretVariable();
pry = 30;
inst.Write();
return 0;
}
这对我来说很有意义,因为变量pry
现在是inst::secret
的别名。此外,pry
的声明,即int &
与返回类型inst::GetSecretVariable()
匹配。
我的问题是:
为什么说它正在返回一个隐式指针,指向其返回值 变量返回别名时的值?
为什么我们需要返回引用?我们为什么不能只声明 GetSecretVariable为:
int GetSecretVariable() { return secret; }
并将pry
设置为:
int pry = inst.GetSecretVariable();
如果我们不打算更改inst::secret
的值?