純粋仮想関数: 実装と目的
C では、純粋仮想関数は通常、実装を提供せずにメソッドのインターフェイスを宣言することに関連付けられます。ただし、以下に示すように、実装を使用して純粋な仮想関数を使用することは可能です。
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
このコードは構文的には有効ですが、その目的と使用法についてはさらなる説明が必要です。
純粋な仮想関数の実装を提供する目的:
基本クラスは、派生クラスが独自の実装を提供する必要がある場合でも、純粋仮想関数の実装。この実装の目的は次のとおりです。
基本クラス実装の呼び出し方法:
派生クラスは、フルスコープの関数を使用して純粋な仮想関数の基本クラス実装を呼び出すことができます。名前:
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 の純粋仮想関数は実装できますか?なぜ実装するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。