问题描述
我见过像 const auto& Now = time(nullptr);
我认为分配 time
返回的右值的目的是延长返回值的生命周期,如 GotW post 中所述。但为什么不使用 const auto Now = time(nullptr)
?
为什么我们要在这里延长返回值的生命周期?是否有任何性能差异?
解决方法
在显示的示例中,没有理由使用引用。无论有没有它,代码段的行为都是相同的。
一般来说,使用引用以避免产生不必要的副本是个好主意,因此养成使用引用的习惯并没有什么坏处,即使在某些情况下它不会产生任何影响。
不过我建议在东边写 const
。这只是一个偏好,绝对不会改变代码的含义,但更一致。我会把它写成:
auto const & now = time(nullptr);