拷贝构造函数与移动构造函数

拷贝构造函数与移动构造函数

拷贝构造函数与移动构造函数的区别

拷贝构造函数的形参是一个左值引用
拷贝构造函数完成的是整个对象或变量的拷贝


移动构造函数的形参是一个右值引用
移动构造函数是生成一个指针指向源对象或变量的地址,接管源对象的内存,相对于大量数据的拷贝节省时间和内存空间。

参考

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

posted @ 2021-05-07 22:38  cheems~  阅读(340)  评论(0编辑  收藏  举报