Skip to content

Latest commit

 

History

History
10 lines (6 loc) · 754 Bytes

File metadata and controls

10 lines (6 loc) · 754 Bytes

移动语义

  • std::move 本身什么也不做,它只是一个类型转换,告诉编译器把这个左值当作右值来处理,“搬运”数据是移动构造函数完成的
  • 右值引用本质上就是一个引用,它指向同一块内存。修改其中一个,另一个也会变化
  • 右值引用主要用于函数参数(如函数重载),提示编译器“这个对象可以被安全地移动”(相比普通引用的优点)
  • 移动语义的本质上指针的交换,而不是数据的复制
  • 左值引用参数虽然也能实现移动语义,但右值引用参数能更清楚地表达意图(类似一种“contract”约定),能明确告诉调用者该函数内部会消耗、转移原数据,安全性更高