派生クラスは C のプライベート純粋仮想関数をオーバーライドするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-08 06:20:02
オリジナル
699 人が閲覧しました

How Can Derived Classes Override Private Pure Virtual Functions in C  ?

C のプライベート純粋仮想関数

C では、Engine クラスのようなプライベート純粋仮想関数に遭遇すると、困惑することがあります。質問が示すように、派生クラスはこれらの関数の実装を提供することが期待されていますが、そのために基本クラスのプライベート メンバーにアクセスするにはどうすればよいでしょうか?

しかし、この質問は誤解に基づいています。派生クラスは実際に実装することができます。プライベートの純粋仮想関数をオーバーライドします。直接呼び出すことはできない場合がありますが、独自の実装を提供することはできます。これにより、「実装のカスタマイズ可能な動作の仕様からインターフェイスの仕様を分離」することが可能になります。 (Herb Sutter、「Virtuality」)

指定された例では、パブリック インターフェイスは、非パブリックで非オーバーロードの仮想関数を呼び出す非仮想オーバーロード関数で構成されています。 「Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals」として知られるこのパターンは、派生クラス内の仮想関数を「隠す」問題に対処します。

SetStateBool と SetStateInt が純粋な仮想関数であるという仮定のケースを考えてみましょう。基本クラスの非仮想インターフェイスを使用します。派生クラスは、特定のオーバーロードが新しい実装によって隠蔽されないように保護する必要があります。そのためには、using 宣言を使用する必要があります。

ただし、プライベート仮想関数を使用すると、派生クラスは、基本クラス内の他のメソッドを隠すことを気にせずに、これらの関数をオーバーライドできます。これにより、派生クラスの仮想関数の動作をカスタマイズするプロセスが簡素化されます。

以上が派生クラスは C のプライベート純粋仮想関数をオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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