一般に純粋仮想関数には実装がないと理解されていますが、特定のシナリオでは基本クラス内での定義が可能です。
指定したコード スニペット内:
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
関数A::f() は実装で純粋仮想として宣言されます。これは C 言語では許可されていますが、その目的について疑問が生じます。
実装を伴う純粋な仮想関数は、特定の目的を果たします。基本クラスにデフォルトの実装を提供することで、派生クラスは次のことが可能になります。
例は次のとおりです:
class B : public A { virtual void f() { A::f(); // Calls the base class implementation } };
実装で純粋仮想関数を使用することは一般的ではありませんが、シナリオによっては有益な場合がありますここで:
基本クラスで純粋仮想関数の実装を提供することは C によって許可されていますが、言語としては一般的ではありません。この手法の目的と影響を理解すると、必要に応じて利用できるようになります。
以上がC で純粋な仮想関数を実装するのはいつ、なぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。