Назад к вопросам
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
}
}