Namara

毎日コード。手助けなし。

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が所有しているメモリを解放してしまわないようにします。