私は過負荷の解決について何かを読んでいて、私を悩ませている何かを見つけました...次のコードで:
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);
}
私の理解では、2つの一時的なintが作成され、SomeFunctionに属するスタックに割り当てられます。したがって、MaxValueが戻ると、r2はそれらの一時変数の1つ(この場合、値3を保持する変数)を参照します。したがって、r2を安全に渡すことができます。
問題は、私の理解が良ければ、これは標準的な動作ですか(確認してください)?そうでない場合は、上記のコードで何が起こっているのか説明してください。
どうもありがとう