Создание через make_unique в C++
Тот же указатель unique_ptr можно получить
без отдельного new в вашем коде.
Функция make_unique из заголовка memory
выделяет объект и сразу возвращает готовый
unique_ptr. Так обычно и пишут: меньше шансов
перепутать тип или оставить обычный указатель,
который сам объект не удалит. Запишем класс User:
#include <iostream>
#include <memory>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим пользователя с именем и возрастом и выведем поле:
int main() {
std::unique_ptr<User> owner =
std::make_unique<User>("tom", 30);
std::cout << owner->age << "\n";
return 0;
}
Сделайте класс Parcel с полем weight
и конструктором с параметром. Создайте объект
через функцию make_unique, выведите вес
и проверьте, что память освобождается без
delete.