私有作用域內的純虛函數
當在基底類別中遇到具有私有、純虛函數的程式碼時,例如提供的範例中:
class Engine { public: void SetState( int var, bool val ); void SetState( int var, int val ); private: virtual void SetStateBool( int var, bool val ) = 0; virtual void SetStateInt ( int var, int val ) = 0; };
衍生類別似乎無法存取這些函數來實作它們。然而,衍生類別可以重寫私有虛函數,提供它們自己的實作。這不要與衍生類別方法無法從基底類別呼叫虛函數混淆。
介面與實作的分離
私有虛函數允許介面規範與可在衍生類別中自訂的實作分離。公用介面由一組重載的非虛函數組成,這些函數呼叫私有的、非重載的虛函數。這個習慣用法被稱為“公共重載非虛擬呼叫受保護的非重載虛擬”,有助於管理隱藏規則。
防止隱藏
在以下場景中公共介面不是虛擬的,虛擬實現是私有的,派生類的作者可以簡單地提供自己的虛擬函數的實現,而不必擔心隱藏基類的成員。例如:
class MyTurbochargedV8 : public Engine { private: void SetStateInt(int var, int val ) {/* new implementation */} };
以上是衍生類別如何在基底類別中實作私有純虛函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!