Единственный указатель unique_ptr в C++
Указатель unique_ptr владеет ровно одним объектом в куче и удаляет его, когда сам указатель уничтожается.
Оператор new здесь остается только внутри
конструктора unique_ptr: адрес сразу попадает
под управление обертки. Доступ к методам дает
оператор ->, как у обычного указателя.
Запишем класс с заметным деструктором:
#include <iostream>
#include <memory>
class Probe {
public:
~Probe() {
std::cout << "probe cleared\n";
}
void ping() {
std::cout << "ping\n";
}
};
Создадим объект, вызовем метод и дождемся удаления в конце жизни указателя:
int main() {
std::unique_ptr<Probe> holder(new Probe());
holder->ping();
return 0;
}
Сделайте класс Beacon с методом, который
печатает слово ready, и деструктором
со словом off. Создайте объект в куче
так, чтобы он удалился при выходе из main,
вызовите метод через стрелку и убедитесь,
что off появляется после работы программы.