2017-02-12 51 views

回答

0

我想這就是爲什麼你在移動的構造看noexcept的原因:

「A類提供強異常保證如果出現異常後,對象會保持其原始值一類的舉動成員明確改變它們的參數的狀態如果在移動一些成員之後拋出一個異常,那麼當異常對象被修改時,強壯的異常保證可能不再成立,特別重要的是對那些打算成爲類的對象使用noexcept與標準庫容器一起使用,如果容器中元素類型的移動構造函數不是noexcept,那麼容器將使用複製構造函數而不是移動構造函數。

所以要回答你的問題,你應該在任何情況下使用noexcept,你的構造函數可以拋出異常。如果你不使用一個,並且如果發生異常,Strong Exception Guarantee將會失敗,這可能會導致代碼的錯誤恢復問題。

來源:http://www.codingstandard.com/rule/12-5-4-declare-noexcept-the-move-constructor-and-move-assignment-operator/

相關問題