c++ - unique_ptr 可以采用 nullptr 值吗?

标签 c++ c++11 pointers unique-ptr nullptr

此代码片段有效吗? :

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 )作为它的右手边;该段落还指定分配 nullptrunique_ptr相当于重置unique_ptr .

因此,在这次分配之后,您的 A对象将被销毁。

关于c++ - unique_ptr 可以采用 nullptr 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070862/

相关文章:

c++ - 指针和引用问题(链表)

c++11 - std::pair 的 switch 语句?

python - 如何在 Python 中将 'managedbuffer' 转换为 Callable

c++ - 在 C++ 中创建 vector 的 shared_ptr

c - 如何打印字符*

c - 为什么仅使用此 C 程序的参数列表中声明的指针即可通过引用传递?

c++ - 3D 线段和平面相交 - 续

c++ - 如何使用条件语句返回指针?

c++ - 在现代 opengl 中移动形状/对象

c++ - 每次运行时文件中的连续输出