引用函数如何"int &foo();"工作?

How does a reference function "int &foo();" work?

本文关键字:工作 foo 函数 int 引用      更新时间:2023-10-16

我不太确定你是否称它为"引用函数",但我的老师向我们展示了一个代码,该代码声明了一个像引用变量一样的函数,我不明白它背后的逻辑。

#include <iostream>
using namespace std;
int &max(int &x, int &y)
{
if(x > y)
return x;
return y;
}
int main()
{
int x, y;
cout << "Enter 2 #s";
cin >> x >> y;
y = 3;
max(x, y) = 1000;
cout << endl;
cout << "X: " << x << endl;
cout << "Y: " << y << endl;
cout << max(x, y) << endl; 
max(x, y) = 1000;
x = 5;
cout << endl;
cout << "X: " << x << endl;
cout << "Y: " << y << endl;
cout << max(x, y) << endl; 
}

它不是一个引用函数,而是返回对表达式中 x 或 y 的引用

return x;

return y;

也许通过注意到您在问题中给出的定义等效于以下表达式,其中 & 写在 int 而不是 max 旁边,这对您来说会更清楚。

int& max(int &x, int &y)
{
if(x > y)
return x;
return y;
}

它不是引用函数,但函数的返回值是引用。您可以像这样阅读函数:int& max(int &x, int &y)。以下是更多信息:https://www.tutorialspoint.com/cplusplus/returning_values_by_reference.htm

我相信命名法意味着该函数将返回对整数的引用。具体怎么做我真的不知道。我不习惯看到以这种方式声明的函数,我可能会完全更改声明。