純粋仮想関数と抽象クラス
純粋仮想関数は、関数本体のない仮想関数です。関数本体がないとはどういう意味ですか?これは次のように定義された関数です。
仮想戻り値関数名(仮引数) = 0;
ご覧のとおり、virtual と virtual function の定義は以前と同じで、最後に =0 が追加されています。関数本体がないことを示します。これは純粋な仮想関数です。純粋仮想関数を含むクラスは抽象クラスです。抽象クラスには少なくとも 1 つの純粋仮想関数があります。
抽象クラスの存在は、高度に抽象化された統一インターフェイスを外部に提供し、ポリモーフィック機能を通じてさまざまなメソッドを使用することです。これは、C++ オブジェクト指向設計とソフトウェア エンジニアリングの中心的な考え方の 1 つです。
抽象クラスの特徴をまとめると次のようになります。
1. 抽象クラスはオブジェクトをインスタンス化できません。派生クラスがその中で純粋な仮想関数を完了し、インスタンス化して使用できるようにするための基本クラスとしてのみ使用できます。
2. 派生抽象クラスは、基本クラス内の純粋な仮想関数を不完全に完了し、抽象クラスとして派生し続けることができます。すべての純粋仮想関数の定義が与えられるまで、それは具象クラスになり、オブジェクトをインスタンス化することはできません。
3. 抽象クラスは抽象クラスであり、具体化できないため、パラメータの型、戻り値、またはキャスト型として使用できません。
4. 3 番目の項目を続けると、抽象クラスは、多態性機能を実現するために、その派生クラスを指すポインターまたは参照型を定義できます。