![How Do Contextual Conversions to bool Affect the Usage of Classes in C ?](https://img.php.cn/upload/article/000/000/000/172996410938962.jpg)
明確運算子到bool 的上下文轉換
當為類別定義了到bool 的明確轉換運算子時,它允許類別實例用作bool 值在某些情況下不需要明確強制轉換。除了可用於條件語句(if (t)) 之外,在下列情況下也允許上下文轉換為bool:
1.表達式
- 布林邏輯非(!t )
- 布林邏輯AND (t && t2)
- 布林邏輯OR (t || t2)
- 三元條件表達式(t ? "true" : "false ")
2.編譯時測試(轉換運算子需要constexpr)
- 靜態斷言(static_assert(t))
- Noexcept 測試(static_assert(t))
- Noexcept 測試(noexceptcept 測試(noexcept (t))
- 明確關鍵字測試(顯式(t))
編譯時條件語句(if constexpr (t))
3.演算法與概念-
- std::remove_if 和std::sort 等演算法中謂詞的參數
滿足NullablePointer 概念的類型,讓它們與std:: 結合使用unique_ptr
其他注意事項
定義明確和隱式轉換運算子時確保一致性至關重要。兩者混合可能會導致混亂和意外行為。有關此主題的更多詳細信息,請參閱下面引用的來源:-
- [可與bool 相互轉換](https://en.cppreference.com/w/cpp/language/cast_ops #Convertible_to_and_from_bool )
[表達式與語句中的隱式轉換](https://www.learncpp.com/cpp-tutorial/implicit-conversions-in-expressions-and-statements/)
以上是到 bool 的上下文轉換如何影響 C 中類別的使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!