抽象メソッドと純粋仮想関数は同じものですか? 質問する

抽象メソッドと純粋仮想関数は同じものですか? 質問する

私の知る限り、抽象メソッドと純粋仮想関数はどちらも機能を提供しません...それで、それらは両方とも同じものだと言えますか?

また、クラス (必ずしも抽象として宣言されているわけではない) に、実装されたメソッド (抽象でも仮想でもない) がいくつか含まれ、純粋仮想関数が含まれているとします。このクラスは抽象クラスでしょうか?

ベストアンサー1

はい、これらは同じものです。C++ では、抽象メソッドは純粋仮想関数の特性を記述する別の方法にすぎません。どちらも、クラスを実際にインスタンス化する前にサブクラスで実装する必要がある、実装が提供されていないメソッドを意味します。

C++ の純粋仮想関数と抽象クラスの状況は、本質的にまったく同じことを意味するため、似ています。抽象クラスには、少なくとも 1 つの純粋仮想関数が必要です。そうしないと、インスタンス化されて抽象クラスではなくなります。同様に、少なくとも 1 つの純粋仮想関数を持つクラスは、メソッドを実際に実装できるように拡張する必要があるため、抽象クラスである必要があります。

したがって、クラスは抽象的であるもし、もし、少なくとも 1 つの純粋仮想関数/抽象メソッドが含まれています。

その後、Java や C# などの言語では、このようなことがより明確にされ、純粋仮想関数の存在ではなく、特別なキーワードでクラス抽象を定義できるようになりました。C++ でもこれらの言語と同じことができますが、少しだけより明示的になっています。:D

おすすめ記事