Для студентов МГТУ им. Н.Э.Баумана по предмету Основы программирования на C++С++ ИУ8 ЛР3: shared ptrС++ ИУ8 ЛР3: shared ptr
4,88530
2021-05-302021-05-30СтудИзба
ДЗ: С++ ИУ8 ЛР3: shared ptr
Описание
# Лабораторная работа №3
### Задание
**SharedPtr** реализует подсчет ссылок на ресурс. Ресурс освободится тогда, когда счетчик ссылок на него будет равен 0. Как видно, система реализует одно из основных правил сборщика мусора.
Многопоточное программирование сложно представить без использования класса `shared_ptr`. Например, класс `scoped_refptr` (аналог `std::shared_ptr`) используется в Chromium [32,753 раз](/?q=scoped_refptr&sq=package:chromium&type=cs). Чтобы лучше усвоить и понять принцип работы этого "умного" указателя, необходимо его реализовать своими руками.
Реализуйте шаблон класса `SharedPtr`. Для счетчика ссылок используйте переменную класса `std::atomic_uint`. Интерфейс работы с этим классом аналогичен работе с переменной типа `unsigned int`, т.е. к нему применимы операции префиксного инкремента и декремента.
```cpp
template <typename T>
class SharedPtr {
public:
SharedPtr();
SharedPtr(T* ptr);
SharedPtr(const SharedPtr& r);
SharedPtr(SharedPtr&& r);
~SharedPtr();
auto opeartor=(const SharedPtr& r) -> SharedPtr&;
auto opeartor=(SharedPtr&& r) -> SharedPtr&;
// проверяет, указывает ли указатель на объект
operator bool() const;
auto operator*() const -> T&;
auto operator->() const -> T*;
auto get() -> T*;
void reset();
void reset(T* ptr);
void swap(SharedPtr& r);
// возвращает количество объектов SharedPtr, которые ссылаются на тот же управляемый объект
auto use_count() const -> size_t;
};
```
Характеристики домашнего задания
Учебное заведение
Семестр
Просмотров
12
Размер
168,43 Kb
Список файлов
._shared_ptr
._hooks
._info
._logs
._refs
._heads
._remotes
._origin
._0a
._0c
._0d
._1d
._1e
._2c
._2f
._3e
._6b
._6f
._8b
._9a
._9e
._13
._18
._19
._27
._54
._69
._71
._72
._73
._75
МГТУ им. Н.Э.Баумана

















