C++中的引用正是如此,它是一个引用其他变量的变量名.
考虑一下这些陈述:
int xyzzy  = 1;
int &plugh = xyzzy;
int twisty = xyzzy;
这里的实际"对象" xyzzy是包含值的东西1.你可以通过它的名字来引用它,xyzzy但这只是它的名字.
这plugh是对完全相同的底层对象的另一个引用- 更改值也plugh将更改值,xyzzy因为这些都是(引用)同名的名称.
twisty另一方面,该变量被创建为一个新对象,并简单地将其值复制xyzzy到它.
你会经常看到这样的事情:
void fn(const string &str1) { ... }
在代码中,因为将引用传递给构造/复制相对昂贵的对象(如字符串)更有效.传递对象的引用允许您直接访问当前存在的对象,并使其const阻止函数更改它.
使用基本类型完成此操作是非常不寻常的,int因为复制它们的成本非常小,通常与传递引用的成本大致相同.
你会偶尔看到喜欢的东西:
void fn(int &thing) { ... }
但这通常是因为thing预期会在函数中更改,并且更改会被镜像回调用者.
你的特定代码可能正在做什么(虽然我不能确定没有更多的上下文)是由于返回引用而没有创建任何新对象.在我最好的猜测中,以下代码显示了它将具有的实现类型:
const int& GetMax(const int& value1, const int& value2) {
    if (value1 >= value2)
        return value1;
    return value2;
}
有了它,代码:
int val1 = 7;
int val2 = 42;
const int &biggest = GetMax (val1, val2);
实际上会将引用 设置为引用biggest最大的val1和val2.换句话说,它在功能上等同于伪代码:
val1 = 7
val2 = 42
if (val1 > val2)
    biggest = reference to val1
else
    biggest = reference to val2