class C
{
public:
int True(int i) const
{
return i+2;
}
};
const C& F(const C& c)
{
return c;
}
int main()
{
const C& c = F(C()); // Line 1
cout << boolalpha << c.True(1) << endl; // Line 2
}
问题> 为什么上面的代码可以打印正确的值?我假设该变量在第 2 行时c
将引用一个无效的临时对象。C
// 更新
我想更新此 OP 以说明我对这个问题感到担忧的原因。
这是来自 C++ 模板的代码片段:完整指南
// maximum of two values of any type
template <typename T>
inline T const& max (T const& a, T const& b)
{
return a < b ? b : a;
}
如您所见,函数返回对传入参数的引用。我只是想知道为什么不使用以下版本:
// maximum of two values of any type
template <typename T>
inline T max (T const& a, T const& b)
{
return a < b ? b : a;
}