This question already has answers here:
Advantages of using std::make_unique over new operator [duplicate]

(2个答案)


在6个月前关闭。




假设我有这个定义:
class A
{
    A();
    std::unique_ptr<B> m_b;
};

class B {};

如果我像这样初始化A,会有区别吗:
A::A() : m_b(new B()) {}


A::A() : m_b(std::make_unique<B>()) {}

此外,对于第一种情况,我可以确定不必显式调用delete吗?

最佳答案

唯一的区别是样式。由于现在考虑使用运算符new,因此建议使用老式的std::make_unique

对于编译器没有区别。

顺便说一句应该是:

A::A() : m_b{std::make_unique<B>()} {}

另见
CppCoreGuidelines/CppCoreGuidelines.md at master · isocpp/CppCoreGuidelines

关于c++ - 在成员初始化器列表中分配unique_ptr ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62061260/

10-11 16:09