C++ std::move 不移动任何字节,只是把表达式转成右值引用,让接收方走移动构造或移动赋值。教学篇见移动语义。
原型
template<class T>
typename remove_reference<T>::type&& move(T&& t) noexcept;参数
t:通常是一个左值对象。
返回值
指向同一对象的右值引用。
示例
#include <iostream>
#include <string>
#include <utility>
int main() {
std::string a = "hi";
std::string b = std::move(a);
std::cout << b << " " << a.size() << "\n";
return 0;
}输出:
hi 0
注意事项
移动后不要再假定 a 仍保存原文字,只保证可以析构或再赋值。常见实现里被移走的 string 长度为 0。
本头文件到此结束。可返回utility 总览或进入memory。