我正在学习右值引用,我的大脑可能到处都是。但我想测试 std::move 和 rvalue 引用,下面是代码片段
string s1 = "hello";
{
string&& s2 = std::move(s1);
cout << s2 << endl;
}
cout << s1 << endl;
两种情况下的输出是相同的。“你好”
我希望在创建 s2 时在块内,它会调用移动赋值运算符,从而确保 s1 没有指向任何东西,但这并没有发生。
我的理由是字符串在其中携带一个指向 char 的指针,因此当调用移动指针时,它将移动内存分配因此当我从 s1 移动到 s2 时,打印 s1 应该会导致问题。
我的理解做错了什么。