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++的唯一工作方式。这能回答你的问题吗?