拷贝构造函数与移动构造函数
拷贝构造函数与移动构造函数
拷贝构造函数与移动构造函数的区别
拷贝构造函数的形参是一个左值引用
拷贝构造函数完成的是整个对象或变量的拷贝
…
…
移动构造函数的形参是一个右值引用
移动构造函数是生成一个指针指向源对象或变量的地址,接管源对象的内存,相对于大量数据的拷贝节省时间和内存空间。
参考
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