【发布时间】:2019-03-21 12:54:22
【问题描述】:
我想将一个大的 std::string 移动到类的成员中。
这是我的代码:
#include <cassert>
#include <string>
#include <iostream>
using namespace std;
class SomeClass {
public:
void some_method(std::string&& str) {
my_str = str;
}
std::string my_str;
};
int main() {
SomeClass some_class;
std::string large_str(100000, 'a');
some_class.some_method(std::move(large_str));
assert(large_str.empty());
assert(!some_class.my_str.empty());
return 0;
}
当移动之后,我预计large_str 是空的,但是这个代码断言在assert(large_str.empty()) 行失败。
我是不是误解了std::move的语义?
【问题讨论】:
标签: c++ rvalue-reference