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

前端之家收集整理的这篇文章主要介绍了c – 防止继承者类覆盖基类的虚函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Is there a way to prevent a method from being overridden in subclasses?14个
情况就是这样.
  1. class Interface
  2. {
  3. public:
  4. virtual void foo() = 0;
  5. }
  6.  
  7. class MyClass : Interface
  8. {
  9. public:
  10. virtual void bar() = 0;
  11. private:
  12. void foo()
  13. {
  14. //Some private work and checks.
  15. bar();
  16. };
  17. }

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

解决方法

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

猜你在找的C&C++相关文章