拷贝构造函数与移动构造函数的区别
拷贝构造函数的形参是一个左值引用
拷贝构造函数完成的是整个对象或变量的拷贝
…
…
移动构造函数的形参是一个右值引用
移动构造函数是生成一个指针指向源对象或变量的地址,接管源对象的内存,相对于大量数据的拷贝节省时间和内存空间。
参考
C++11–移动构造函数
拷贝构造函数与移动构造函数
Test(Test&& T):m_ptr(T.m_ptr) { T.m_ptr = nullptr; cout << "移动拷贝构造" << endl; } Test(const Test& T){ m_ptr=new int; *m_ptr=*T.m_ptr; cout << "常引用深拷贝构造" << endl; } Test(Test& T){ m_ptr=T.m_ptr;//error cout << "浅拷贝构造" << endl; } ~Test(){ delete m_ptr; }
第三个之所以不能用是应该第一个析构把T.m_ptr delete了,第二次析构m_ptr时,这两个指针指向同一个地址了,所以err