c++ - 如何为类定义 'final' 成员函数

标签 c++

是否可以让我的成员函数 final 像在 Java 中一样,以便派生类不能覆盖它们?

最佳答案

C++11 添加了一个 final 上下文关键字来支持这一点:

class B
{
  public:
    virtual void foo() final;
};
class D : B
{
  public:
    virtual void foo(); // error: declaration of 'foo' overrides a 'final' function
};
GCC 4.7 和 Clang 3.0 支持

final。正如 Sergius 在他的回答中指出的那样,自 MSVC++2005 起,MSVC++ 就支持它(使用拼写 sealed)。因此,如果您封装在一个迷你宏中并根据您的编译器进行设置,您就可以按照自己的方式进行操作。只要确保您确实正在至少经常使用这样的编译器,这样您就可以及早发现任何错误。

关于c++ - 如何为类定义 'final' 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3625545/

相关文章:

c++ - 只需按下 QToolButton 即可将其移动到不同的布局?

c++ - 搜索二进制值

c++ - 指针是否允许在单继承中更改值?

c++ - std::get 在切换到 Boost 1.64 时发生冲突

c++ - 具有特征参数的模板特化函数

c++ - 通过指针调整数组大小

c++ - 使用 std::cout 添加时间戳

c++ - 为什么 std::copy_n 不增加输入迭代器 n 次?

c++ - 是什么阻止 g++ 消除运行时未使用的临时 std::array ?

c++ - CGAL:当三角形没有时来自邻居的输出