14
代碼是否正確?unique_ptr應該具有nullptr值嗎?
unique_ptr<A> p(new A());
p = nullptr;
我應該使用nullptr帶*的unique_ptr *?或者它會失敗?
我試穿g ++,但是,其他編譯器呢?
代碼是否正確?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& operator=(nullptr_t) noexcept
;效果:
reset()
。後置條件:
get() == nullptr
這意味着類模板的定義還包括用於接受作爲其右側nullptr_t
類型(如nullptr
)的值的operator =
過載;該段還規定,將nullptr
分配給unique_ptr
相當於重置unique_ptr
。
因此,在此作業後,您的A
對象將被銷燬。
我明白了。順便說一句,只有nullptr有nullptr_t,那就是它完成的方式,不是嗎? – Zhen 2013-02-25 15:58:50
@珍:標準沒有指定這個。你可以創建一個'nullptr_t'類型的變量,但是我懷疑你永遠不需要這樣做。 – 2013-02-25 16:03:39