We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
R2.9
原文:
std::move 宣告对象的数据即将被转移到其他对象,转移之后对象在逻辑上不再有效,不应再被使用。
单看这句话并无什么太过分的问题,但是主要在于:类似的话术传播非常广泛和深远,让人对于移动语义和 std::move 抱有了很多不切实际的幻想,认为它是编译器做了什么魔法,std::move 了就不能再使用。
std::move
原文描述本身并无太大问题,但是我认为总归还是可以改进的,前半句是没有太多问题的,也是一种“君子协定”,让开发者们约定了,自己定义的类的移动构造、移动赋值等函数,是转移资源所有权。
这里的重点在于移动构造、移动赋值等函数,而非是 std::move 本身,std::move 实际几乎什么也没做,它只是将左值表达式转换到亡值表达式,用以匹配移动构造、移动赋值等函数;
“移动”,是 std::move 的语义上的,而非实际作用上的。
原文描述的:“std::move 宣告对象的数据即将被转移到其他对象”,这里“宣告”,其实就是指的语义上的“移动”,一种暗示,我能明白其表达含义。
总而言之,我认为应该强调:
虽然这可能让此规则不那么简洁,但是对后人来说,大大减小难度,也可以避免中文互联上的无数的对移动语义的错误信息传播误导。
The text was updated successfully, but these errors were encountered:
好的~ 后续改进
Sorry, something went wrong.
No branches or pull requests
原文:
单看这句话并无什么太过分的问题,但是主要在于:类似的话术传播非常广泛和深远,让人对于移动语义和
std::move
抱有了很多不切实际的幻想,认为它是编译器做了什么魔法,std::move
了就不能再使用。原文描述本身并无太大问题,但是我认为总归还是可以改进的,前半句是没有太多问题的,也是一种“君子协定”,让开发者们约定了,自己定义的类的移动构造、移动赋值等函数,是转移资源所有权。
这里的重点在于移动构造、移动赋值等函数,而非是
std::move
本身,std::move 实际几乎什么也没做,它只是将左值表达式转换到亡值表达式,用以匹配移动构造、移动赋值等函数;“移动”,是
std::move
的语义上的,而非实际作用上的。原文描述的:“std::move 宣告对象的数据即将被转移到其他对象”,这里“宣告”,其实就是指的语义上的“移动”,一种暗示,我能明白其表达含义。
总而言之,我认为应该强调:
虽然这可能让此规则不那么简洁,但是对后人来说,大大减小难度,也可以避免中文互联上的无数的对移动语义的错误信息传播误导。
The text was updated successfully, but these errors were encountered: