node = std::unique_ptr<Node>(new Node());
2)std::unique_ptr<Node> node = std::make_unique<Node>(new Node());
Вторая эквивалентна std::unique_ptr<Node> node = std::unique_ptr<Node>(new Node(new Node()))
Во втором случае ты присваещь юнику, сконструированный умный указатель, который сам динамически алоцирует память для обьекта
Второй варин сам взывает new, передавая в конструктор аргументы
основная разница конечно в том, что второй вариант это сразу nohire
Во втором случае нет дублирования кода, если юзать ещё auto Плюс в качестве аргумента функции безопаснее передавать std::make…, чем непосредственно new
т.е. из 3-х варианто: 1) std::unique_ptr<Node> node = std::unique_ptr<Node>(new Node()); 2)std::unique_ptr<Node> node = std::make_unique<Node>(); 3)std::unique_ptr<Node> node(new Node()); Второй самый надежный?
Разницы почти нет, просто можно юзать auto в сочетании с make_unique
Надежный вариант - std::make_unique<Node>();
точно, это опечатка
2ая неправильная
Обсуждают сегодня