為什麼應該避免從std::string 派生
Scott Meyers 在他的《Effective C》一書中建議不要從std: :string 衍生: :string 類,主要是因為它缺少虛擬析構函數。然而,這並不是避免此類繼承的唯一原因。
定義繼承標準
要充當適當的基類,類別必須:
std::string 作為Base Class
std::string 無法滿足這些條件,原因如下:
此外,即使在繼承只是為了可重用性的情況下,C 也缺乏阻止客戶端創建的機制使用基類指針的派生類的對象。這可能違反了限制此類使用的預期目的。
違反繼承的後果
忽略這些準則可能會導致代碼:
綜上所述,C 中的繼承應保留用於多態性情況,並且由於其設計限制和切片問題, std::string 不應用作基類。採用非成員函數或組合等替代方法可以促進慣用的 C 實踐並確保程式碼的清晰度和可靠性。
以上是為什麼你不應該從 C 中的 std::string 繼承?的詳細內容。更多資訊請關注PHP中文網其他相關文章!