【C++基础】std::move用法介绍

文章目录

  • 前言
  • 一、std::move()使用场景
    • 1.std::move()
    • 2.std::move作用
  • 二、注意事项
    • 1.访问一个被move后的对象合法,但我们不应该对它的值有任何期待
  • 总结


前言

本文归纳总结了std::move的用法,使用场景,以及作用会对我们的程序带来哪些好处和使用时的注意事项。


一、std::move()使用场景

之前在右值引用和move语义总结中我们已经介绍过右值引用和移动语义,发现通过移动而不是拷贝会让我们的代码性能更高。但是移动有个要求是参数必须是右值,假设有如下代码:

#include 
#include 

template <typename T>
void mySwapCopy(T& a, T& b)
{
   
   
	T tmp {
   
    a }; // invokes copy constructor
	a = b; // invokes copy assignment
	b = tmp; // invokes copy assignment
}

int main()
{
   
   
	std::string x{
   
    "abc" };
	std::string y{
   
    "de" };

	std::cout << "x: " << x << '\n';
	std::cout << "y: " << y << '\n';

	mySwapCopy(x

你可能感兴趣的:(C++,c++,开发语言)