This question already has answers here:
Advantages of using std::make_unique over new operator [duplicate]
(2个答案)
在6个月前关闭。
假设我有这个定义:
如果我像这样初始化
与
此外,对于第一种情况,我可以确定不必显式调用
另见
CppCoreGuidelines/CppCoreGuidelines.md at master · isocpp/CppCoreGuidelines
(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