Назад к задачам
Junior — Senior
7

SharedPtr: реализация конструктора, принимающего сырой указатель

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

Необходимо реализовать конструктор класса‑шаблона, который принимает указатель типа T*. Конструктор обязан присвоить полученный указатель полю m_ptr и инициализировать счётчик ссылок m_counter значением 1.


template <class T>
class SharedPtr {
    int* m_counter = nullptr;
    T* m_ptr = nullptr;

public:
    SharedPtr() = default;

    SharedPtr(const SharedPtr& p) {
        m_ptr = p.m_ptr;
        m_counter = p.m_counter;
        (*m_counter)++;
    }

    SharedPtr(T* ptr) {
        m_ptr = ptr;
        m_counter = new int(1);
    }
};