` C 20 中的運算子? " />
非預設運算子 且缺少== 和!=
在C 20 中,太空船運算子 ; 提供了通用比較機制。 > 的預設實現的以下程式碼:
在這種情況下,程式碼編譯成功並允許使用== 和!= 來比較X 的實例:
自訂實作區塊== 和!=但是,當提供 的自訂實作時:編譯導致錯誤:
行為原因根據C 20 標準,此行為是故意的:如果類別定義沒有顯式聲明== 運算子函數,而是宣告預設三向比較函數,則隱式宣告== 運算子函數,其存取權限與三向比較運算子函數相同.
只有預設的;運算符產生一個合成的==。 ,如果一個類別有自訂;實作時,程式設計師還必須提供自訂== 實作以確保正確的比較行為。
以上是為什麼在 C 20 中不能將 `==` 和 `!=` 與自訂 `<=>` 運算子一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!