2026-08-21
buffer.cpp
#include <cstddef>
struct Buffer {
int* data;
size_t size;
Buffer(size_t n) : data(new int[n]), size(n) {}
~Buffer() { delete[] data; }
// write the move constructor here
Buffer(Buffer&& other) noexcept;
};
ムーブコンストラクタを実装してください。otherのリソースを奪い取り、otherを有効な空の状態にしておく必要があります。
参考実装
Buffer::Buffer(Buffer&& other) noexcept
: data(other.data), size(other.size) {
other.data = nullptr;
other.size = 0;
}
配列をコピーするのではなく、ポインタをそのまま受け取ります。そのうえでotherをnullにしておくことで、otherのデストラクタが今や*thisが所有しているメモリを解放してしまわないようにします。