C 中的私有純虛函數
在C 中,遇到類似Engine 類別中的私有純虛函數可能會令人費解。正如問題所暗示的,衍生類別應該提供這些函數的實現,但是它們如何存取基底類別的私有成員來做到這一點?
但是,問題在於一個誤解:衍生類別確實可以覆寫私有純虛函數。他們可能無法直接調用它們,但可以提供自己的實作。這允許「將介面規範與實現的可自訂行為規範分開」。 (Herb Sutter,「虛擬性」)
在給定的範例中,公用介面由呼叫非公用、非重載虛擬函數的非虛擬重載函數組成。這種模式稱為“公共重載非虛函數呼叫受保護的非重載虛函數”,解決了衍生類別中“隱藏”虛函數的問題。
考慮 SetStateBool 和 SetStateInt 是純虛函數的假設情況基底類別中具有非虛擬介面。派生類別需要保護特定重載不被新實作隱藏。為此,他們必須使用 using 聲明。
但是,透過使用私有虛函數,衍生類別可以重寫這些函數,而不必擔心隱藏基底類別中的其他方法。這簡化了在衍生類別中自訂虛函數行為的過程。
以上是衍生類別如何重寫 C 中的私有純虛函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!