我是否可以拥有必须从非抽象基础覆盖的虚函数

时间:2013-08-09 08:17:44

标签: c++

假设我有基类和派生类

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

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

如果BaseClass是抽象的,我可以声明

  virtual void MustBeOverRidden() = 0;

但是在这种情况下,基类功能通常会作为派生功能的一部分进行调用。在这种情况下,有没有办法强制所有派生类覆盖基类函数?或者,我可以为纯虚函数提供实现吗?

编辑:纯虚函数的实现不起作用,因为我需要能够实例化我的基类,这导致错误C2259:'MyBaseClass':无法实例化抽象类

1 个答案:

答案 0 :(得分:2)

是的,可以强制派生类覆盖虚函数,并提供实现:

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

void MyBaseClass::MustBeOverRidden()
{ 
    DoSomething();
}