Практика по умным указателям в C++
Сделайте класс Timer с методом, который
печатает tick, и деструктором со словом
stop. Держите объект в куче так, чтобы
он удалился сам при выходе из main,
вызовите метод один раз.
Сделайте класс Cargo с полем tons.
Создайте объект через make_unique,
передайте владение в другую переменную
через std::move и выведите tons
из нового владельца.
Сделайте базу Shape с виртуальным
area_tag и виртуальным деструктором,
потомка Square с другим текстом.
Храните Square в unique_ptr<Shape>
и выведите результат area_tag.
Сделайте класс Ledger с полем balance.
Получите два shared_ptr через
make_shared на один объект, выведите
balance и значение use_count
из первой переменной.
Сделайте класс Ping с полем code.
Создайте shared_ptr, сохраните
weak_ptr, уничтожьте сильный указатель,
вызовите lock и выведите lost,
если объект уже удален.
Напишите функцию, которая принимает
unique_ptr<Widget> по значению и печатает
поле id класса Widget. В main
создайте виджет, передайте его в функцию
через std::move и проверьте, что
исходная переменная пуста.