ホームページ >バックエンド開発 >C++ >派生クラスはどのようにしてプライベート純粋仮想関数を基本クラスに実装できますか?

派生クラスはどのようにしてプライベート純粋仮想関数を基本クラスに実装できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 06:45:02194ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。