首頁  >  文章  >  後端開發  >  衍生類別如何在基底類別中實作私有純虛函數?

衍生類別如何在基底類別中實作私有純虛函數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 06:45:02190瀏覽

How Can Derived Classes Implement Private Pure Virtual Functions in a Base Class?

私有作用域內的純虛函數

當在基底類別中遇到具有私有、純虛函數的程式碼時,例如提供的範例中:

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中文網其他相關文章!

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