直接の派生クラスで c++ の純粋仮想関数を強制的に定義する必要がありますか? それとも、具体的なクラスでのみ定義できるように、それを回避できますか? これはどのように達成されますか?
3 に答える
3
純粋なvirtual
関数の実装を強制する人は誰もいないので、そうする必要はありません。あなたのクラスは単に抽象的になります。派生クラスでは、宣言を省略するか、virtual pure として再宣言します。
struct Base
{
virtual void foo() = 0;
};
//this is OK, X is abstract
struct X : Base
{
};
//this is also OK, redundant, and Y is abstract
struct Y : Base
{
virtual void foo() = 0;
};
于 2013-01-03T17:43:49.880 に答える
1
そのクラスの実際のオブジェクトの作成を開始するまで、クラスで純粋仮想関数を定義する必要はまったくありません。
抽象クラスは、他のクラスのベースとして機能することを目的としています。抽象クラス階層は任意に深くすることができます。つまり、直接の子孫で純粋仮想メソッドを定義する必要はありません。
于 2013-01-03T17:44:52.497 に答える
1
実装されていない仮想純粋メソッドがある場合、派生クラスは抽象です。インスタンス化する場合は、何らかの派生クラスでメソッドを実装する必要があります。
于 2013-01-03T17:45:32.277 に答える