gpt4 book ai didi

c++ - 如何在子类中强制覆盖虚拟函数

转载 作者:行者123 更新时间:2023-12-02 09:47:51 25 4
gpt4 key购买 nike

假设我有以下代码:

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++标准中的可能性感到好奇。

最佳答案

您可以通过将一个子类级别设为“pure”(virtual method()=0;)来强制其覆盖某个方法,但是您不能强制多个级别再次对每个子类进行覆盖-这确实不是您所关心的。
换句话说,如果您向最终用户提供基类(或派生类),则可以强制他覆盖(定义)派生类中的方法。如果该用户想要再次从其派生类中派生,则由他来决定下一个(进一步)派生类是否需要其他替代。

关于c++ - 如何在子类中强制覆盖虚拟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63769193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com