【发布时间】:2021-06-10 03:48:08
【问题描述】:
众所周知,如果与非基本类型一起使用,c++ std::move 会窃取内部内容。我突然想到如果将左值移动到右值会发生什么。我最初认为它仍然会窃取内容。但是什么也没发生,a 的字符串还在。这是由于忽略了移动构造函数引起的吗?但我认为一个命名的右值被编译器认为是左值,对吧?
int main()
{
string a="4";
string&& c = move(a);
cout<<a<<endl;
}
【问题讨论】:
-
std::move 是一个演员表。它不会偷任何东西。移动构造函数或移动赋值运算符执行此操作。您的代码也不会调用。