c++ - 在没有基类(非派生)的类中为虚函数添加 final 关键字是否有意义

标签 c++ c++11 final virtual-functions

我正在阅读一篇很棒的 awesome C++11 tutorial并且作者在解释 final 关键字时提供了这个例子:

struct B {
    virtual void f() const final;   // do not override
    virtual void g();
};
struct D : B {
    void f() const;     // error: D::f attempts to override final B::f
    void g();       // OK
};

那么在这里使用 final 关键字有意义吗?在我看来,您可以避免在此处使用 virtual 关键字并防止 f() 被覆盖。

最佳答案

如果不将函数标记为virtualfinal,那么子类仍然可以实现该函数并隐藏基类函数。

通过使函数virtualfinal,子类不能重写隐藏函数。

关于c++ - 在没有基类(非派生)的类中为虚函数添加 final 关键字是否有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153281/

相关文章:

java - java中的初始化安全

c++ - 整数类型的模板特化如何工作?

c++ - 在单独的线程上分配 PBO?

c++ - 减去两个对象的无序 std::vector

java - 显示不正确修饰符的匿名内部类

Java 惰性线程安全单例,使用 Final 字段实现

c++ - 不能迭代集合

c++ - 使用 std::vector 的链接错误

c++ - 在 unique_ptr 上使用强制转换运算符是否危险?

c++ - STL 容器类型作为模板参数