gpt4 book ai didi

c++ - 哪些类型的代码需要注意右值引用?

转载 作者:IT老高 更新时间:2023-10-28 22:36:36 25 4
gpt4 key购买 nike

我看到很多人在理解右值引用时遇到问题。一旦新标准出台,“普通”C++ 代码(例如,使用标准库,但未实现它)是否需要了解右值引用,或者人员/代码是否可以假装右值引用不存在?右值引用主要关注库实现者还是所有程序员?

最佳答案

在 GMan(又名 gmannickg)关于该主题的博客文章中,我没有看到任何不同意的地方:

http://blackninjagames.com/?p=95

总结:任何了解 copy-and-swap (以及通常的三规则)的人,应该了解移动语义(以及因此的右值引用),因为最佳实践习惯用法发生了变化因此。因此,我认为任何人都关心 C++。

我认为您必须知道,因为当然 copy-and-swap 仍然有效,它仍然是异常安全的,等等。而且我想有人可能会争论“普通”C++代码和程序员是否甚至需要知道 copy-and-swap 。我希望答案是“嗯,嗯,很明显”,但你永远不会知道。

当然,开始使用 C++0x 的时间点因地而异。很快就忘记 C++03 可能不是一个好主意。

例如,如果您可以依赖移动分配,则在对复制省略无效的上下文中按值返回大量集合成为更好的选择。这不是在 C++03 中无效的东西在 C++0x 中有效的情况,而是在 C++03 中非常慢的代码,你可以解决(即使仅使用放置良好的 swap),在 C++0x 中变得很好。因此,如果您假装右值引用不存在,您将继续解决您不需要的事情。如果您进行跳转,那么它可能会干净地向后移植到 C++03,但运行速度很慢,这很痛苦。

所以聪明的做法可能是了解它,并且在许多情况下假装它不存在。

关于c++ - 哪些类型的代码需要注意右值引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com