通过"const auto&"和"auto"捕获返回值之间的区别



我见过类似const auto& now = time(nullptr);的代码

我认为分配time返回的右值的目的是延长返回值的生存期,正如GotW文章中所解释的那样。但是为什么不使用const auto now = time(nullptr)呢?

为什么我们要在这里延长回报价值的寿命?性能有什么不同吗?

在所示的示例中,没有理由使用引用。代码段的行为与否是相同的。

一般来说,使用引用来避免产生不必要的副本是个好主意,所以养成使用引用的习惯没有坏处,即使在某些情况下没有什么不同。

不过,我建议在东部写const。这只是一个偏好,肯定不会改变代码的含义,但它更一致。我会把它写成:

auto const & now = time(nullptr);

最新更新