c++ 移动构造函数 stdmove

std::move(A) 负责将左值A变为一个将亡值,应该暂时理解不了,先往下看

这些个问题涉及到对象的构造,速度的优化,资源的利用,甚至临时对象的利用
先讲讲个人的理解
相对于拷贝构造函数
移动构造函数利用内存中已有的对象构造对象,也就是将指针指向已有的对象,思想类似单例?
而不用在内存中重新构造一个新的对象,毕竟这点有一定的开销,特别是对于大的对象来说
如果用对象A初始化对象B后对象A就不再使用了,但是A的内存还在(在析构之前)
拷贝构造函数,就是复制一份,内存中划出一个新的空间,将对应的信息复制写入
既然如此,不如索性直接使用A的空间

移动构造函数的参数,两个"&"

A(A && a);
移动构造函数的参数是一个右值或者将亡值的引用,和上面的分析一致
拷贝构造函数的参数是一个左值引用,移动构造函数参数是一个右值引用
只有用一个右值,或者将亡值初始化另一个对象的时候,才会调用移动构造函数
std::move,就是将一个左值变成一个将亡值,常常用于移动构造函数的参数传递中
大胆猜测,就是指针的变化而已。

//这是NTL库中的函数,就是看到这小子才有了这个文章
ZZ(ZZ&& a)
{
   *this = std::move(a);
}
posted @ 2020-11-10 16:21  ecnu_lxz  阅读(724)  评论(0)    收藏  举报