首頁 >後端開發 >C++ >您可以用 C 中的移出物件做什麼?

您可以用 C 中的移出物件做什麼?

Susan Sarandon
Susan Sarandon原創
2024-12-25 12:03:09574瀏覽

What Can You Do with a Moved-From Object in C  ?

對移出物件允許哪些操作?

C 標準定義了已移出物件的行為。這些知識對於理解某些函​​數(例如 std::swap)如何運作至關重要。

標準定義

依標準(第 17.6.5.15 節), C標準庫類型中的物件可以被移動並隨後放置在「有效但未指定的狀態。」

操作的含義

當物件處於未指定狀態時,您可以執行任何沒有前提條件的操作。無前提操作包括:

  • 析構
  • 賦值
  • 常數觀察者(例如,get、empty、size)

但是,操作有先決條件的通常不能在沒有進一步檢查的情況下執行。例如:

  • 取消引用
  • pop_back

範例:std::swap

d: : swap 函數,如原始問題所示,需要指派給移出的物件。這是可能的,因為賦值是無前提操作。

附加說明:T c = std::move(a) 與T c(std::move(a))

在std::swap 實作中,使用直接移動賦值T c = std::move(a) 而不是複製建構子T c(std::move(a))。這樣做是為了避免不必要的 a 副本,這會導致效能損失。

以上是您可以用 C 中的移出物件做什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn