C 11 中「移自」物件的有效狀態
問題:
中
問題:中
問題:中
問題:中
問題:class Foo { std::unique_ptr<FooImpl> impl_; };
答案:
移出物件的有效性由類型的規範定義,並且文件。 對於標準庫類型,移出的物件被置於未指定但有效的狀態,這意味著它們滿足該類型的所有標準要求,除非另有說明。使用者必須查詢狀態以確定有效操作。 對於開發人員定義的類型,您可以定義並記錄構成有效狀態的內容以及移出物件的允許操作。 在以下上下文中提供的 pimpl 習語範例:您可以指定從 Foo 物件移動會使 do_stuff 操作無效,使其未定義 行為。這是合理的,因為移動意味著不能對移出的物件執行進一步的操作。 或者,您可以為移出的 Foo 物件定義特定狀態,確保標準函式庫的概念要求是還是遇見了。這將允許您將移出的 Foo 物件與標準庫一起使用,而不會出現未定義的行為。 請注意,標準函式庫概念不考慮移出的物件。因此,如果移出的物件沒有根據相關概念保持有效狀態,則將它們與標準庫一起使用將導致未定義的行為。以上是什麼條件確保 C 11 中移出物件的有效性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!