C ++の抽象クラスと仮想基本クラスとの類似点と相違点

1.抽象クラス
抽象クラスが最初に必要とするものを理解するには、純粋仮想関数が必要です。

1.純粋仮想関数
純粋仮想関数は、基本クラスで宣言される仮想関数です。基本クラスで特定の操作内容を定義するものではありません。各派生クラスは、実際のニーズに応じて独自のバージョンを定義する必要があります。純粋の宣言形式の仮想関数
virtual 函数类型 函数名(参数表)=0;

つまり、仮想関数宣言ステートメントのセミコロンの前に= 0を追加して、仮想関数を純粋仮想関数に変換します。ここで、= 0は、クラス内の仮想関数宣言ステートメントにのみ表示されます。

純粋仮想関数は宣言する必要があるだけで、定義する必要はありません。それらの存在はインターフェースを提供することです。純粋仮想関数を含むクラスは抽象基本クラスです。純粋仮想関数はサブクラスで書き直す必要があります。

抽象クラスは、派生クラスの基本クラスとしてのみ使用でき、オブジェクトを定義することはできません。それらの役割は、クラスファミリー全体の統合された外部インターフェイスを標準化することです。

2.抽象クラスの特徴
1)純粋仮想関数を含むクラスは抽象クラスと呼ばれます。抽象クラスは派生クラスの基本クラスとしてのみ使用でき、オブジェクトを定義することはできません

2)純粋仮想関数が定義されている場合、仮想関数の実現部分は定義できません。

3)抽象クラスの唯一の目的は、派生クラスの基本クラスを提供することです。純粋仮想関数の役割は、派生クラスのメンバー関数の基礎として機能し、動的ポリモーフィズムを実現することです。抽象クラスから継承する派生クラスが基本クラスのすべての純粋仮想関数を実装できない場合、この派生クラスは抽象クラスになります。純粋仮想関数を含むクラスが抽象クラスである限り、基本クラスの抽象関数を継承するためです。純粋仮想関数は、抽象クラスでこのメソッドの宣言を定義しており、他のクラスはこのインターフェイスに従ってのみ実装できます。

3.抽象クラスの構文
純粋仮想関数を持つクラスは、抽象クラスと呼ばれます。

class 类名
{
    
    
virtual 类型 函数名(参数表)=0;
//其他成员
}

4.抽象クラスの役割
1)継承階層で関連データと動作を整理して、派生クラスに必要な動作があることを確認します
。2)一時的に実装できない関数は、純粋な仮想関数として宣言し、派生クラスに残すことができます。達成する。

注:
1)抽象クラスは基本クラスとしてのみ使用できます
2)抽象クラスのオブジェクトは定義できません

5.仮想基本クラスとの違い
簡単に言えば、仮想基本クラスは多重継承によって引き起こされるあいまいさの問題を解決すること
ですが、抽象クラスは統合された外部インターフェースです。
(C ++とJavaの抽象クラスを混同する可能性が高いと思います。C++の抽象クラスは、クラス名の前に抽象を追加する必要はありません。)

おすすめ

転載: blog.csdn.net/qq_43530773/article/details/114191238