12
A
回答
14
在C++术语来说,你有首要(与在一个类层次结构的虚拟方法)和超载(与具有相同名称但考虑不同参数的函数)。您还有隐藏的名称(通过在嵌套声明区域或范围中显式声明相同的名称)。
C++标准不使用术语“覆盖”,除非在其规范的英语形式中(即用一个新值替换一个值,如覆盖以前值x
的赋值x = 10
)。
7
您可以覆盖变量,例如int a = 0; a = 42;
和文件(打开现有文件进行写入 - 如果您有权限,它将覆盖现有文件内容),如果这就是您的意思。这与压倒一切没有多大关系。你是否想过重载?
5
我熟悉的通常区别是覆盖和重载。 虚拟功能被覆盖。当有一个名称相同但签名不同的版本时,函数会被重载(这存在于很多语言中)。在C++中,你也可以重载操作符。 AFAIK,覆盖是一个不相关的概念(覆盖变量,文件,缓冲区等),并且并不特定于C++甚至是OOP语言。
2
覆盖在OOP中是“正常的事情”:派生类为某些东西提供了一个不同的(即更专门的)实现,覆盖了基类,例如。 apple::foo()
覆盖fruit::foo()
如果苹果是从水果派生的类。 (不要被过载错误使用不同的参数签名,这导致完全不同的功能)。
覆盖我知道完全用另一个定义替换。不是在具体的水平上,而是在程序的其余部分。这有时会被使用的JavaScript,如果一个大的框架,有一些特殊的问题,而你不想撕开的大文件:
<script type="text/javascript"
src="some super big framework, often in one big file">
<script type="text/javascript">
Ext.ux.window.createWin = function() {
// completely OVERWRITE the implementation
(often to 'hotfix' a particular bug)
}
</script>
不过:我不知道的任何C这样的事情++,如一个函数的重新定义总是会在编译时导致错误。至多,我可以想象弯曲函数指针,或(重新)定义回调钩子。
相关问题
- 1. 覆盖覆盖?
- 2. 覆盖与覆盖
- 3. 覆盖或覆盖
- 4. C#UnityEvents - 覆盖
- 5. 覆盖和C#
- 6. 覆盖在C#
- 7. 覆盖ProcessCmdKey C#
- 8. 覆盖在C
- 9. C++方法覆盖
- 10. C#列表覆盖
- 11. C++覆盖方法
- 12. C#发现覆盖
- 13. Objective-C覆盖valueForKey:NSMutableDictionary
- 14. 覆盖链表C
- 15. 覆盖在C++类
- 16. c#覆盖枚举
- 17. C# - 继承,覆盖
- 18. 覆盖
- 19. 覆盖
- 20. 覆盖
- 21. 覆盖
- 22. 覆盖
- 23. 覆盖
- 24. 覆盖
- 25. 覆盖
- 26. 用透明覆盖物覆盖div
- 27. R:覆盖图上的覆盖图
- 28. 覆盖一个画布覆盖div
- 29. 如何覆盖JS URL覆盖?
- 30. 覆盖/覆盖功能内的功能
我从来没有听说过任何与C++有关的术语“覆盖”。 – 2011-01-19 17:26:01
“覆盖”一词的来源可能是从德语到英语的不好翻译。德语的技术术语“重写”是“überschreiben”,其实际上(!)翻译回英文为“重写”。那么你可能会说德语吗? – nabulke 2011-01-19 18:14:43