1

基本クラスと派生クラスがあるとします

class MyBaseClass
{
public:
   virtual void MustBeOverRidden()
   { 
      DoSomething();
   }
};

class MyDerivedClass : public MyBaseClass
{
public:
   void MustBeOverRidden()
   { 
      MyBaseClass::DoSomething();
      DoSomethingElse();
   }
};

BaseClass が抽象型の場合、宣言できます

  virtual void MustBeOverRidden() = 0;

ただし、この場合、基本クラスの機能は通常、派生機能の一部として呼び出されます。この場合、すべての派生クラスを強制的に基本クラス関数をオーバーライドする方法はありますか? または、純粋仮想関数の実装を提供できますか?

編集: 基本クラスをインスタンス化できるようにする必要があるため、純粋仮想関数の実装が機能せず、 エラー C2259: 'MyBaseClass' : 抽象クラスをインスタンス化できません

4

1 に答える 1

2

はい、派生クラスに強制的に仮想関数をオーバーライドさせ、実装を提供することも可能です:

class MyBaseClass
{
public:
   virtual void MustBeOverRidden() = 0;
};

void MyBaseClass::MustBeOverRidden()
{ 
    DoSomething();
}
于 2013-08-09T08:20:40.190 に答える