首頁 > 後端開發 > C++ > 為什麼 C 編譯器不自動產生比較運算子?

為什麼 C 編譯器不自動產生比較運算子?

Patricia Arquette
發布: 2024-11-29 04:06:17
原創
420 人瀏覽過

Why Don't C   Compilers Automatically Generate Comparison Operators?

為什麼C 編譯器不會自動產生比較運算子

儘管編譯器能夠提供預設建構函式和賦值運算子等基本方法,但它值得注意的是,省略了定義比較運算符,例如operator==和operator!=。這種遺漏提出了一個問題:為什麼?

一個論點表明,如果編譯器可以產生預設的複製建構函數,它也應該能夠提供預設的運算子 ==()。然而,不這樣做的決定可能源自於 C 的創建者 Bjarne Stroustrup 不願意包含預設的複製機制。

Stroustrup 在他的《C 的設計與演變》一書中表達了他的反對意見默認複製操作,指出他經常禁止在自己的類別中進行複製。這種不情願源自於預設複製建構子繼承自 C 並且經常被濫用。

因此,與其質疑為什麼 C 缺少預設運算子 ==(),不如考慮為什麼它包括預設賦值和複製建構子。這個決定是出於與 C 的向後相容性,這在 C 的發展過程中既是一種祝福,也是一種令人不情願的妥協。

對於那些喜歡阻止預設複製操作的人,聲明私有賦值運算子和複製建構子在他們的 IDE 片段中可能是一種有用的做法。這允許在需要時明確刪除這些聲明,確保更好地控制類別行為。

以上是為什麼 C 編譯器不自動產生比較運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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