Введение в умные указатели в C++
Объект в куче с обычным указателем удаляют вручную,
командой delete.
Умный указатель хранит тот же адрес и при своем
уничтожении сам удаляет объект. Если забыть delete
в одной ветке if или перед ранним return,
объект не останется в памяти: указатель удалит его сам.
Запишем класс User:
#include <iostream>
#include <memory>
#include <string>
class User {
public:
std::string name;
User(std::string name) : name(name) {}
};
Создадим его в куче внутри указателя
unique_ptr и выведем имя через стрелку.
Объект исчезнет, когда переменная owner
закончит жизнь:
int main() {
std::unique_ptr<User> owner(new User("ann"));
std::cout << owner->name << "\n";
return 0;
}