是否可以让我的成员函数 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/