回答
如果你宣布你的方法虚拟像这样:
virtual myMethod();
然后,他们可以被覆盖。删除虚拟让他们 “非overidable”
由于C++ 11,你也可以用最终以虚拟像这样:
virtual myMethod() final;
有什么办法可以在C++ 03 – noname
@noname中做到这一点通过不添加'虚拟的' –
从C++ 11起,有作为以及可以在类和方法上使用的最终关键字。
据我所知,以前版本无法做到这一点。
见https://en.wikipedia.org/wiki/C%2B%2B11#Explicit_overrides_and_final
尽管C++ 11及更高版本允许被宣布final
方法,我敢说它不是做一件好事。不要封锁你的课堂!它的用户可能有创造性的场景,他们可能需要稍微调整一下。为什么剥夺他们这个选择?
如果你看看标准库的实现(在效率和风格方面真的很好的编程的最佳来源之一),你会看到成员永远不是最终的,也不是自己的。
类设计师应该有一个很好的理由做出任何最终的决定,但有充足的理由去做。 [义务链接](https://isocpp.org/wiki/faq/strange-inheritance#final-classes) –
还没有真正看到任何做出任何最终决定的好理由。 – SergeyA
还没有看到它,所以它不存在?大企业有不同意的工程师。点击我的链接。 –
如何做出最后的类前C C++ 11 ++版本: https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Final_Class
- 1. C++覆盖方法
- 2. C++方法覆盖
- 3. C# - 调用覆盖方法
- 4. C++中的覆盖方法
- 5. 使用Artifactory预防覆盖部署
- 6. 覆盖方法
- 7. 覆盖方法
- 8. 覆盖'+'方法
- 9. 覆盖方法
- 10. 覆盖方法
- 11. Java方法覆盖 - “方法不会覆盖超级方法...”
- 12. C++覆盖...覆盖?
- 13. Android方法覆盖
- 14. Java。覆盖方法
- 15. eclipse覆盖方法
- 16. Backbone.Marionette覆盖方法
- 17. 覆盖OnCreateOptionsMenu方法
- 18. 在C中覆盖的方法#
- 19. 虚拟方法覆盖在C++
- 20. 如何覆盖ironPython下的C#方法
- 21. c#单元测试覆盖方法
- 22. 运行时的C#覆盖方法
- 23. 如何覆盖C#中的ToString()方法?
- 24. 覆盖Obj-c不工作的方法
- 25. “在运行时覆盖方法”C#
- 26. C++覆盖方法不起作用
- 27. QT/C++ - 覆盖方法的衍生自
- 28. 调用覆盖方法,超类调用覆盖方法
- 29. 强制覆盖方法,如果另一种方法被覆盖
- 30. 调用从覆盖方法中覆盖的方法在OO PHP
方法是默认情况下不重写。如果你不说他们可以被覆盖,他们不能。 – awksp
我会对您的示例代码做出解释,但您似乎忘记了包含示例代码。 – kfsone
@kfsone我不确定它是否需要这个问题。如果你在阅读理解方面挣扎,让我知道。我总是很乐意帮助他们发表绝对舌头和脸颊评论。这是一个帮助的地方,而不是践踏。 – Freddy