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

Mary-Kate Olsen
リリース: 2024-11-04 06:45:02
オリジナル
150 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!