理解C 11 中移出物件的有效狀態
C 11 中的移動語意引入了一個關鍵概念:之後物件的狀態被搬離。然而,移出物件必須滿足的確切條件可能會令人困惑。
pimpl 物件的問題
考慮 pimpl 習慣用法,其中一個類別包裝一個指向實現物件的指標。如果我們從 Foo 物件(包含 std::unique_ptr
標準函式庫移出狀態
C 標準定義標準庫類型的移出物件放置在「未指定但有效」的狀態中。狀態。 」這意味著您可以對具有有效前提條件的它們執行操作。
但是,對於非標準類型,您必須定義並記錄移出後允許的有效狀態和操作。
定義pimpl 的有效狀態
在Foo 範例中,我們可以指定從它移動會渲染do_stuff函數無效。請考慮使用「空物件」模式。 FooImpl。其與標準庫函數一起使用可能會導致未定義的行為。
以上是C 11 中移出物件的有效狀態是什麼以及如何定義它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!