微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`const auto&` 和 `auto` 捕获返回值的区别

如何解决`const auto&` 和 `auto` 捕获返回值的区别

我见过像 const auto& Now = time(nullptr);

这样的代码

我认为分配 time 返回的右值的目的是延长返回值的生命周期,如 GotW post 中所述。但为什么不使用 const auto Now = time(nullptr)

为什么我们要在这里延长返回值的生命周期?是否有任何性能差异?

解决方法

在显示的示例中,没有理由使用引用。无论有没有它,代码段的行为都是相同的。

一般来说,使用引用以避免产生不必要的副本是个好主意,因此养成使用引用的习惯并没有什么坏处,即使在某些情况下它不会产生任何影响。

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

auto const & now = time(nullptr);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。