Практика на умные указатели в C++
Задачи создают объекты через std::unique_ptr
и std::shared_ptr, передают владение
или делят один ресурс между несколькими владельцами.
Сделайте класс FileJob с полем path.
Создайте std::unique_ptr<FileJob>
для пути "data.txt" и выведите path.
Сделайте std::unique_ptr<int> с числом
7. Передайте владение в другую
unique_ptr через std::move.
Выведите значение и проверьте, что первый
указатель пуст.
Сделайте класс Counter с полем value.
Храните его в std::shared_ptr<Counter>,
скопируйте умный указатель во вторую переменную,
измените value через вторую ссылку
и выведите use_count и значение
через первую.
Сделайте функцию, которая принимает
std::shared_ptr<Widget> и увеличивает
поле clicks. Создайте один Widget
в shared_ptr, вызовите функцию два раза
с копией указателя и выведите clicks.
Сделайте std::vector<std::unique_ptr<Item>>
для класса Item с полем sku.
Добавьте три элемента через make_unique.
Выведите sku второго элемента.
Даны типы:
class Node {
public:
int id;
Node(int value) : id(value) {}
};
Создайте shared_ptr<Node> с 1,
положите его в std::vector<shared_ptr<Node>>
вместе с еще одной копией того же указателя.
Выведите сумму id и use_count
для первого узла.
Сделайте класс Owner с полем
std::unique_ptr<Resource>, где
Resource хранит label.
Создайте Owner с ресурсом "db"
и выведите метку через метод label
у Owner.