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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章