关于”引用”的一个小问题

#include
int &fun(int a, int b)
{
static int c;
c = a + b;
return c;
}
void main()
{
using namespace std;
if (fun(1, 2) == fun(3, 4))
cout << "相等" << endl;
system("pause");
}
为什么输出的是想等?还有函数返回的是c的引用 引用不适应个有个名字么?比如
int a=12;
int &b=a;
b是a的引用 所以函数返回c的引用不也应该有个类似b的别名么?(如下)
int *&()
{
int *p=new int;
int *&b=p;
return b;
}
这段代码有问题么?(即使有问题还是想问问)还有返回的b该拿什么变量接收?

关键是这个 int &fun 引用符号,它使得返回值指向静态变量c,所以两次计算后,前面一次计算的结果被后面覆盖,比较最后进行,就相等了。

int *&() 缺少函数名
int *&foo() 这样可以编译通过