`const auto&` 和 `auto` 捕获 return 值的区别
Difference between capturing return value by `const auto&` and `auto`
我见过像 const auto& now = time(nullptr);
这样的代码
我认为 time
分配右值 return 的目的是延长 return 值的生命周期,如 GotW post 中所述。但是为什么不用const auto now = time(nullptr)
呢?
为什么我们要在这里延长 return 值的生命周期?有什么性能差异吗?
在所示示例中,没有理由使用引用。片段的行为无论有没有它都是相同的。
一般来说,使用引用以避免产生不必要的副本是个好主意,因此养成使用引用的习惯并没有什么害处,即使在某些情况下它没有什么不同。
不过我建议在东边写 const
。这只是一种偏好,绝对不会改变代码的含义,但更加一致。我会写成:
auto const & now = time(nullptr);
我见过像 const auto& now = time(nullptr);
我认为 time
分配右值 return 的目的是延长 return 值的生命周期,如 GotW post 中所述。但是为什么不用const auto now = time(nullptr)
呢?
为什么我们要在这里延长 return 值的生命周期?有什么性能差异吗?
在所示示例中,没有理由使用引用。片段的行为无论有没有它都是相同的。
一般来说,使用引用以避免产生不必要的副本是个好主意,因此养成使用引用的习惯并没有什么害处,即使在某些情况下它没有什么不同。
不过我建议在东边写 const
。这只是一种偏好,绝对不会改变代码的含义,但更加一致。我会写成:
auto const & now = time(nullptr);