首頁  >  文章  >  後端開發  >  我們可以透過繼承來擴展 C 標準函式庫嗎?

我們可以透過繼承來擴展 C 標準函式庫嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 05:07:02126瀏覽

Can We Extend the C   Standard Library Through Inheritance?

透過繼承擴充 C 標準函式庫

普遍的看法是 C 標準函式庫不應該透過繼承來擴充。然而, std::Exception 的存在挑戰了這個概念。因此,出現了以下問題:

標準庫類別可以透過繼承來擴展嗎?

除了std::Exception之外,還不清楚還有哪些標準函式庫類別是為了繼承。確定合適候選者的實用方法如下:

  • 檢查虛擬方法:具有虛擬方法的類別是基類的潛在候選者。
  • 避免使用友元聲明的類別:封裝問題可能會導致繼承出現問題。
  • 考慮模板:透過專門化進行自訂可能比模板的繼承更好。
  • 警惕基於策略的機制:這些機製表明繼承是不可取的。

從標準庫類別繼承的含義

當從像std::exception 這樣的標準庫類繼承時,子類是否必須遵守原始接口是有爭議的。然而,「里氏替換原則」(LSP)表明,就客戶端而言,子類別的行為應該與基類的行為一致。

因此,最好的做法是確保子類別的 What() 成員函數傳回非空指針,即使標準沒有明確要求 std::exception 的子類別這樣做。

以上是我們可以透過繼承來擴展 C 標準函式庫嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn