Sobes.tech
Назад к задачам
Junior — Senior
34

SharedPtr: реализация метода разрушения

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо дополнить деструктор простого умного указателя SharedPtr. Он должен:

  1. Уменьшать счётчик владения объектом;
  2. При достижении нуля освобождать управляемый ресурс и сам счётчик.
template <class T>
class SharedPtr {
    int* refCount = nullptr;
    T* resource = nullptr;

public:
    SharedPtr() = default;

    SharedPtr(const SharedPtr& other) {
        resource = other.resource;
        refCount = other.refCount;
        (*refCount)++;
    }

    explicit SharedPtr(T* p) {
        refCount = new int(1);
        resource = p;
    }

    ~SharedPtr() {
        if (refCount && --(*refCount) == 0) {
            delete resource;
            delete refCount;
        }
    }
};