C++ 如何在子类中强制重写虚函数

C++ 如何在子类中强制重写虚函数,c++,c++11,C++,C++11,假设我有以下代码: class Base { virtual void myFunc(); }; class Subclass1 : public Base { // OK virtual void myFunc() override; // overrides the base function }; class Subclass2 : public Base { // How to make this fail ? // does not declare an overrid

假设我有以下代码:

class Base {
  virtual void myFunc();
};

class Subclass1 : public Base { // OK
  virtual void myFunc() override; // overrides the base function
};

class Subclass2 : public Base { // How to make this fail ?
  // does not declare an override for myFunc
};

< C++ >有没有办法让编译失败,因为子类2没有实现它的变体MyFunc?我知道如何做相反的事情,那就是使编译失败,因为子类1通过使用final重写myFunc,但我不知道有什么机制可以在C++11中实现我想要的

我对后面的C++标准中的可能性也很好奇。

< p>可以强制一个子类级别重写一个方法,使其为“纯”虚拟方法=0;但是,你不能强迫多个级别的每一个都再次覆盖它-这真的不应该是你的担心

换句话说,如果向最终用户提供基类或派生类,则可以强制他重写其派生类中的define方法。如果该用户希望再次从其派生类派生,则由他决定下一个派生类是否需要不同的重写。

您可以强制一个子类级别重写一个方法,方法为“纯”虚拟方法=0;,但是,你不能强迫多个级别的每一个都再次覆盖它-这真的不应该是你的担心


换句话说,如果向最终用户提供基类或派生类,则可以强制他重写其派生类中的define方法。如果该用户希望再次从其派生类派生,则由他自己决定下一个派生类是否需要不同的重写。

使基函数纯虚拟:virtual void myFunc=0;C++中没有任何东西需要一个子类来重写超类中的方法。唯一的要求是纯虚函数必须由正在构造的类或中间子类之一重写。这是C++的唯一工作方式。这能回答你的问题吗?使基函数为纯虚函数:虚void myFunc=0;C++中没有任何东西需要一个子类来重写超类中的方法。唯一的要求是纯虚函数必须由正在构造的类或中间子类之一重写。这是C++的唯一工作方式。这能回答你的问题吗?