Sobes.tech
Back to questions
Junior — Middle
91

Какими типами умных указателей вы использовали в своих проектах?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В C++ наиболее часто используются три типа умных указателей из стандартной библиотеки <memory>:

  • 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;

    std::shared_ptr<int> sptr1 = std::make_shared<int>(20);
    std::shared_ptr<int> sptr2 = sptr1; // совместное владение

    std::weak_ptr<int> wptr = sptr1; // слабая ссылка

    return 0;
}

В проектах выбор умного указателя зависит от требований к владению и времени жизни объектов.