首頁 > 後端開發 > C++ > 什麼條件確保 C 11 中移出物件的有效性?

什麼條件確保 C 11 中移出物件的有效性?

DDD
發布: 2024-12-09 12:06:15
原創
865 人瀏覽過

What Conditions Ensure the Validity of a Moved-From Object in C  11?

C 11 中「移自」物件的有效狀態

問題:

問題:

問題:

問題:

問題:
class Foo {
    std::unique_ptr<FooImpl> impl_;
};
登入後複製

中C 11、當一個物件被移走時,它進入一種未指定的狀態。這樣的「移出」物件應該滿足什麼條件才能保持有效?

答案:

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

以上是什麼條件確保 C 11 中移出物件的有效性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板