Sobes.tech
Назад к вопросам
Junior — Middle
90

Можешь назвать типы умных указателей, реализованных в стандартной библиотеке C++?

Ответ от нейросети

sobes.tech AI

В стандартной библиотеке C++ реализованы три основных типа умных указателей:

  • std::unique_ptr — обеспечивает уникальное владение объектом. Объект, на который указывает unique_ptr, уничтожается автоматически при выходе указателя из области видимости. Нельзя копировать, можно только перемещать.

  • std::shared_ptr — реализует разделяемое владение объектом. Объект уничтожается, когда последний shared_ptr, указывающий на него, уничтожается или перенаправляется.

  • std::weak_ptr — слабая ссылка на объект, управляемый shared_ptr. Не влияет на время жизни объекта, позволяет проверить, существует ли объект, прежде чем получить к нему доступ.

Пример использования:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> uptr = std::make_unique<int>(10);
    std::cout << *uptr << std::endl; // 10

    std::shared_ptr<int> sptr1 = std::make_shared<int>(20);
    std::shared_ptr<int> sptr2 = sptr1; // разделяем владение
    std::cout << *sptr2 << std::endl; // 20

    std::weak_ptr<int> wptr = sptr1;
    if (auto spt = wptr.lock()) { // проверяем, что объект существует
        std::cout << *spt << std::endl; // 20
    }
}