純粋仮想関数: 実装の可能性を明らかにする
純粋仮想関数の概念は、通常、基本クラス内に実装が存在しないことと関連付けられています。 。ただし、純粋仮想関数が実際に実装を持つことができるというのは驚くべきことかもしれません。
C では、純粋仮想関数は、基本クラス内で関数本体なしで「= 0」を使用して宣言されます。ただし、基本クラスは純粋仮想関数の実装を定義することができます。この実装は外部クラスから直接アクセスできませんが、完全スコープ名を使用して派生クラスから明示的に呼び出すことができます。
次のコード スニペットを考えてみましょう。
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
この例では、クラス A は純粋仮想関数 f() を定義しますが、実装も提供します。派生クラス B は、完全スコープ名 A::f():
class B : public A { virtual void f() { // class B doesn't have anything special to do for f() // so we'll call A's // note that A's declaration of f() would have to be public or protected to avoid a compile time problem A::f(); } };
を使用してこの基本クラス実装にアクセスできます。純粋な仮想関数の実装を提供すると、次によってオーバーライドできるデフォルトの動作が可能になります。派生クラス。また、派生クラスが独自の実装を定義している場合でも、一貫した機能セットを必要に応じて明示的に呼び出すことができます。
この戦略は、合理的なデフォルト動作が必要な状況でよく採用されますが、これは不可欠です。この動作を明示的に呼び出すには、さらに、派生クラスが独自の作業を実行するだけでなく、共通の機能セットからも恩恵を受けることが期待される場合に便利です。
純粋な仮想関数の実装を提供することは一般的ではないことに注意することが重要です。 C で練習します。ただし、特定のシナリオでは柔軟性とカスタマイズを提供できる有効なオプションです。
以上が純粋仮想関数は C で実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。