我正在阅读有关重载解析的内容,但发现了一些困扰我的内容...在以下代码中:
int const& MaxValue(int const& a, int const& b)
{
return a > b ? a : b;
}
void SomeFunction()
{
short aShort1 = 3;
short aShort2 = 1;
int const & r2 = MaxValue(aShort1, aShort2); // integral promotion
//is it safe to pass r2 around before function SomeFunction completes
// CallSomeOtherFunctionThatCallsSomethingElse(r2);
}
我的理解是创建了两个临时 int,并将它们分配在属于 SomeFunction 的堆栈上。因此,当 MaxValue 返回时,r2 将引用这些临时变量之一(在本例中,是保存值 3 的变量)。因此,传递 r2 应该是安全的。
问题是,如果我的理解没问题,这是标准行为吗(请验证)?如果不是,请解释上面代码中发生的情况。
非常感谢