首頁 >後端開發 >C++ >衍生類別如何重寫 C 中的私有純虛函數?

衍生類別如何重寫 C 中的私有純虛函數?

Patricia Arquette
Patricia Arquette原創
2024-11-08 06:20:02845瀏覽

How Can Derived Classes Override Private Pure Virtual Functions in C  ?

C 中的私有純虛函數

在C 中,遇到類似Engine 類別中的私有純虛函數可能會令人費解。正如問題所暗示的,衍生類別應該提供這些函數的實現,但是它們如何存取基底類別的私有成員來做到這一點?

但是,問題在於一個誤解:衍生類別確實可以覆寫私有純虛函數。他們可能無法直接調用它們,但可以提供自己的實作。這允許「將介面規範與實現的可自訂行為規範分開」。 (Herb Sutter,「虛擬性」)

在給定的範例中,公用介面由呼叫非公用、非重載虛擬函數的非虛擬重載函數組成。這種模式稱為“公共重載非虛函數呼叫受保護的非重載虛函數”,解決了衍生類別中“隱藏”虛函數的問題。

考慮 SetStateBool 和 SetStateInt 是純虛函數的假設情況基底類別中具有非虛擬介面。派生類別需要保護特定重載不被新實作隱藏。為此,他們必須使用 using 聲明。

但是,透過使用私有虛函數,衍生類別可以重寫這些函數,而不必擔心隱藏基底類別中的其他方法。這簡化了在衍生類別中自訂虛函數行為的過程。

以上是衍生類別如何重寫 C 中的私有純虛函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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