c – 防止继承者类覆盖基类的虚函数

参见英文答案 > Is there a way to prevent a method from being overridden in subclasses?14个
情况就是这样.
class Interface
{
public:
    virtual void foo() = 0;
}

class MyClass : Interface
{
public:
    virtual void bar() = 0;
private:
    void foo()
    {
        //Some private work and checks.
        bar();
    };
}

我希望我的用户将创建一个继承自MyClass的类,并且他们必须在那里实现bar().
但我怎么能说他们不会覆盖foo()?因为使用我的foo()对我很重要.

解决方法

在C 11中,您可以将方法标记为final,以防止它被覆盖:
class MyClass : Interface
{
public:
    virtual void bar() = 0;
private:
    void foo() final
    {
        //Some private work and checks.
        bar();
    };
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...