学习移动语义之前要先了解一下RVO机制
RVO(Return Value Optimization)是一种编译器优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象返回,那么这个临时对象会消耗一个构造函数(Constructor)、一个拷贝构造函数(Copy Constructor)以及一个析构函数(Destructor)的调用的代价,RVO的目的就是消除为保存返回值而创建的临时对象,这样就可以将成本降低到一个构造函数的代价。更具体的请自行查阅资料。
移动语义的功能也是类似的,它出现的目的就是减少在因临时对象的出现而进行的数据的重复拷贝和同一批数据的堆的重复的分配和释放。
1, 移动语义