C++ 标准库 - <utility>

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。