如何解决如何在子类中强制覆盖虚拟函数
假设我有以下代码:
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 ++中,由于Subclass2
不是实现其myFunc()
的变体,有什么办法使编译失败吗?我知道相反的做法,就是使编译失败,因为Subclass1
会覆盖myFunc()
(通过使用final
),但是我不知道有什么机制可以实现我想要的在C ++ 11中。
我也对后来的C ++标准中的可能性感到好奇。
解决方法
您可以通过将其设为“纯”(virtual method()=0;
)来强制一个子类级别覆盖一个方法,但是您不能强制多个级别分别为每个再次覆盖它-那真的不应该是您关心的问题。
换句话说,如果您向最终用户提供基类(或派生类),则可以强制他重写(定义)派生类中的方法。如果该用户希望再次从其派生类派生,则由他来决定下一个(进一步)派生类是否需要其他替代。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。