首頁 > 後端開發 > C++ > 在 C 中,何時明確「operator bool」無需強制轉換即可運作?

在 C 中,何時明確「operator bool」無需強制轉換即可運作?

Barbara Streisand
發布: 2024-10-26 23:46:31
原創
436 人瀏覽過

 When Does an Explicit `operator bool` Work Without Casting in C  ?

無需強制轉換的明確運算符bool

在設計一個明確轉換為bool 的類別時,人們可能想知道在沒有明確強制轉換的情況下它可以在哪裡用作布林值.

上下文轉換為bool

C 標準定義了值可以「根據上下文轉換為bool」的特定場景。這些情況分為四大類:

1。語句:

  • if (t) /* 語句*/;
  • for (; t;) /* 語句*/;
  • while ( t) /* 語句*/;
  • do { /* 語句*/ } while (t);

2.表達式:

  • !t
  • t && t2
  • t || t2
  • t ? 「真」:「假」

3.編譯時檢定:

  • static_assert(t);
  • no🎜>static_assert(t);
  • noexcept( t)
  • explicit(t)
if constexpr (t)

4。演算法與概念:
  • NullablePointer T
  • std::remove_if(...)
std::sort(...)

常數和非常量運算符的注意事項

    值得注意的是,常數和非常量轉換運算符的組合可能會導致混亂。請參閱以下相關問題以了解更多資訊:
  • [為什麼上下文轉換中沒有發生明確 bool() 轉換? ](https://stackoverflow.com/questions/5580156/why- doest-explicit-bool-conversion-happen-in-contextual-conversion)
[為什麼明確運算子 bool 沒有按預期生效? ](https://stackoverflow.com/questions/26578447/why -明確運算子佈林未如預期生效)

以上是在 C 中,何時明確「operator bool」無需強制轉換即可運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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