← Каталог
Особенности и расширения языка C++ — Move-конструктор и move-оператор присваивания
Фрагмент из «Особенности и расширения языка C++»: Move-конструктор и move-оператор присваивания.
class Buffer {
char* data;
size_t size;
public:
// Move-конструктор
Buffer(Buffer&& other) noexcept
: data(other.data), size(other.size) {
other.data = nullptr;
other.size = 0;
}
// Move-оператор присваивания
Buffer& operator=(Buffer&& other) noexcept {
if (this != &other) {
delete[] data;
data = other.data;
size = other.size;
other.data = nullptr;
other.size = 0;
}
return *this;
}
}; class Buffer {
char* data;
size_t size;
public:
// Move-конструктор
Buffer(Buffer&& other) noexcept
: data(other.data), size(other.size) {
other.data = nullptr;
other.size = 0;
}
// Move-оператор присваивания
Buffer& operator=(Buffer&& other) noexcept {
if (this != &other) {
delete[] data;
data = other.data;
size = other.size;
other.data = nullptr;
other.size = 0;
}
return *this;
}
};