🌷🌷🌷🌷例子1:vector的移动构造函数和移动赋值运算符
🌷🌷🌷🌷例子2:自定义类的移动构造函数和移动赋值运算符
移动构造函数
移动构造函数是一种特殊的构造函数,它接受一个右值引用参数,并使用该参数的资源(如内存)来构造新对象。移动构造函数通常是通过std::move函数来调用的,它将左值强制转换为右值引用,从而触发移动语义。考虑一个类MyClass,它有一个指向动态分配内存的指针成员m_ptr:
class MyClass {
public:
MyClass() : m_ptr(nullptr), m_size(0) {}
MyClass(int size) : m_ptr(new int[size]), m_size(size) {}
~MyClass() { delete[] m_ptr; }
// 移动构造函数
MyClass(MyClass&& other) noexcept {
m_ptr = other.m_ptr;
m_size = other.m_size;
other.m_ptr = nullptr;
other.m_size = 0;
}
private:
int* m_ptr;
int m_size;
};
在上面的代码中,移动构造函数将other对象的指针和大小移动到新对象中,并将other对象的指针和大小设置为null和0。这样可以避免进行不必要的深拷贝操作,从而提高程序的性能。