首頁 > 後端開發 > C++ > 主體

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

Mary-Kate Olsen
發布: 2024-11-04 06:45:02
原創
151 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!