2

直接の派生クラスで c++ の純粋仮想関数を強制的に定義する必要がありますか? それとも、具体的なクラスでのみ定義できるように、それを回避できますか? これはどのように達成されますか?

4

3 に答える 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 に答える