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