首頁 > 後端開發 > C++ > 主體

Safe-Bool 慣用語在 C 11 及更高版本中是否已過時?

Patricia Arquette
發布: 2024-11-27 02:27:12
原創
690 人瀏覽過

Is the Safe-Bool Idiom Obsolete in C  11 and Beyond?

Safe-Bool 慣用法是 C 11 的遺物嗎?

曾經在 C 中廣泛使用的 safe-bool 慣用法現在面臨著根據 C 11 引入的顯式布林轉換運算符進行審查。根據 C 11 標準 (§4 [conv] p3),如果對應的變數宣告格式良好,則表達式可以隱式轉換為型別。這個概念稱為“上下文轉換”,允許直接將值指派給布林變數。

安全布林替換

C 11 之前,safe-bool 習慣用法用於提供對布林轉換的明確控制。它涉及定義一個具有明確名稱的成員函數,例如傳回布林值的 is_valid() 或 is_active() 。然而,隨著 C 11 引入顯式運算子 bool() const;,開發人員現在可以為其類別定義顯式布林轉換運算子。

操作中的上下文轉換

涉及以下語言結構的表達式需要上下文轉換為布林值:

  • if、while、 for (§6.4 [stmt.select] p4)
  • 二元邏輯運算子&& 和|| (§5.14 [expr.log.and/or] p1 對於兩者)
  • 邏輯否定運算子! (§5.3.1 [expr.unary.op] p9)
  • 條件運算子?: (§5.14 [expr.cond] p1)
  • static_assert (§7 [dcl.dcl] p4 )
  • noexcept (§15.4 [ except.spec] p2)

答案

safe-bool 習慣用法在 C 11 中確實被認為是過時的。顯式布林轉換運算子的引入提供了更清晰、更控制布林轉換的邏輯方法。透過允許直接賦值給布林變量,上下文轉換消除了對 safe-bool 習慣用法的需要,並簡化了程式碼的可讀性。

以上是Safe-Bool 慣用語在 C 11 及更高版本中是否已過時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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