std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左值、左值引用、右值、右值引用 参见:http://www.cnblogs.com/SZxiaochun/p/8017475.html)
通过std::move,可以避免不必要的拷贝操作。
std::move是为性能而生。
std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝
#pragma once #include "pch.h" #include #include #include #include int main() { std::string str = "Hello"; std::string str1 = "Hello123"; std::vector v; //调用常规的拷贝构造函数,新建字符数组,拷贝数据 v.push_back(str); std::cout << "After copy, str is \"" << str << "\"\n"; //调用移动构造函数,掏空str1,掏空后,最好不要使用str v.push_back(std::move(str1)); std::cout << "After move, str is \"" << str1 << "\"\n"; std::cout << "The contents of the vector are \"" << v[0] << "\", \"" << v[1] << "\"\n"; }
参考链接:https://blog.csdn.net/BJUT_bluecat/article/details/85683886
https://blog.csdn.net/u013390476/article/details/52040225
https://blog.csdn.net/p942005405/article/details/84644069
https://www.cnblogs.com/SZxiaochun/p/8017349.html
作者:小锐驿站