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

简介: 拷贝构造函数与移动构造函数

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

拷贝构造函数的形参是一个左值引用

拷贝构造函数完成的是整个对象或变量的拷贝

移动构造函数的形参是一个右值引用

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

参考

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



目录
相关文章
|
5月前
|
安全 编译器 C++
C++一分钟之-构造函数与析构函数
【6月更文挑战第20天】C++中的构造函数初始化对象,析构函数负责资源清理。构造函数有默认、参数化和拷贝形式,需注意异常安全和成员初始化。析构确保资源释放,避免内存泄漏,要防止重复析构。示例代码展示了不同构造函数和析构函数的调用情况。掌握构造和析构是有效管理对象生命周期和资源的关键。
48 2
|
5月前
|
编译器 C语言 C++
【C++】:构造函数和析构函数
【C++】:构造函数和析构函数
48 0
|
存储 Cloud Native 编译器
C++ 什么时候生成默认构造函数
C++ 什么时候生成默认构造函数
|
6月前
|
存储 编译器 对象存储
【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)
【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)
37 0
|
6月前
|
编译器 C++
【c++】构造函数和析构函数
【c++】构造函数和析构函数
【c++】构造函数和析构函数
|
6月前
|
存储 编译器 C语言
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
|
6月前
|
编译器 C语言 C++
C++构造函数,析构函数
C++构造函数,析构函数
|
6月前
|
存储 编译器 Linux
构造函数与析构函数的问题总结
构造函数与析构函数的问题总结
67 0
|
11月前
|
存储 编译器 C++
类和对象:构造函数,析构函数与拷贝构造函数
类和对象:构造函数,析构函数与拷贝构造函数
|
11月前
|
编译器 程序员 C++
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解(下)
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解