無需強制轉換的明確運算符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中文網其他相關文章!