Я понимаю, что это полезно, когда вы хотите использовать функцию на левой стороне оператора присваивания.Также упоминается, что «когда функция возвращает ссылку, она возвращает неявный указатель на свое возвращаемое значение».Однако мое понимание функции с возвращаемым типом ссылки на переменную состоит в том, что возвращаемая переменная является псевдонимом этой переменной.
Из примера в: 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
?