c – unique_ptr是否应该具有nullptr值?

前端之家收集整理的这篇文章主要介绍了c – unique_ptr是否应该具有nullptr值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
代码是否正确?
unique_ptr<A> p( new A());
p = nullptr;

我应该使用带有* unique_ptr *的nullptr吗?还是会失败?

我尝试g,但是,其他编译器呢?

解决方法

它会奏效

根据C11标准的关于unique_ptr<>的20.7.1.2.3 / 8-9段类模板:

unique_ptr& operator=(nullptr_t) noexcept;

Effects: reset().

Postcondition: get() == nullptr

这意味着类模板的定义unique_ptr<>包括operator =的重载,它接受nullptr_t类型的值(如nullptr)作为其右手侧;该段还指定将nullptr分配给unique_ptr等同于重置unique_ptr.

因此,在此赋值之后,您的A对象将被销毁.

猜你在找的C&C++相关文章