move函数的本质

move 容易被人误以为是 窃取某个对象的资源给另一个对象,但这是错误的认知。

move 本质上只干一件事情,把左值强制转换为右值引用,进而能够让编译器去调用 move 对象的移动语义。

因此,如果 move 的对象没有实现移动语义,那么你也无法触发,就会去走 拷贝(复制)语义,也就无法实现高效的资源转移。

  • 待移动的对象实现移动语义,move 该对象实现资源窃取,性能提升
  • 待移动的对象没有实现移动语义,move 不会对该对象实现资源窃取,转而去走拷贝语义,性能没有任何提升

代码实现:理解 move 函数