此代码片段有效吗? :
unique_ptr<A> p(new A());
p = nullptr;
也就是说,我可以将 nullptr
分配给 unique_ptr
吗?还是会失败?
我用 g++ 编译器尝试了这个,它成功了,但是其他编译器呢?
最佳答案
它会起作用。
来自 C++11 标准的第 20.7.1.2.3/8-9 段关于 unique_ptr<>
类模板:
unique_ptr& operator=(nullptr_t) noexcept
;Effects:
reset()
.Postcondition:
get() == nullptr
这表示类模板的定义unique_ptr<>
包含 operator =
的重载接受 nullptr_t
类型的值(例如 nullptr
)作为它的右手边;该段落还指定分配 nullptr
到 unique_ptr
相当于重置unique_ptr
.
因此,在这次分配之后,您的 A
对象将被销毁。
关于c++ - unique_ptr 可以采用 nullptr 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070862/