Back to tasksGet help with live coding in real time with Sobes Copilot
Junior — Senior
33
SharedPtr: реализация метода разрушения
Task condition
Необходимо дополнить деструктор простого умного указателя SharedPtr. Он должен:
- Уменьшать счётчик владения объектом;
- При достижении нуля освобождать управляемый ресурс и сам счётчик.
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;
}
}
};