c++ - 在没有赋值的情况下调用 std::move() 会发生什么
问题描述
当我std::move
没有任何分配就使用时会发生什么?
std::string s = "Moving";
std::move(s); //What happens on this line to s?
//is s still valid here?
解决方案
std::move()
不会自行移动传递的对象;它只是可能为对象启用移动语义。它由一个转换组成,您可以使用它的结果来选择(如果可能的话)支持移动语义的适当重载。因此,在您的代码中:
std::string s = "Moving";
std::move(s);
std::move(s)
以上转换s
为右值引用。不使用铸造的结果。上面的对象s
实际上并没有被移动,也没有被修改。
推荐阅读
- ruby-on-rails - Mongoid find_by 本地化字段的任何语言
- c++ - 多个 if 语句 cpp
- asp.net-mvc-5 - UserManager.SendEmailAsync,我可以放心地忽略它吗?
- java - 使用 Tomcat8 和 ErrorPageFilter 的 Spring Boot 战争部署
- sql - ElasticSearch:使用 OR AND 子句创建布尔查询
- c# - 将 netcore IConfigurationSection 绑定到动态对象
- python - 准确指定要从 matplotlib 图中删除的行
- c# - C# Ajax 获取请求
- php - Laravel Blade @foreach 指令未定义偏移量:1
- javascript - javascript 从 assoc 数组中删除(空)数组