5
我一直以爲...新/刪除「覆蓋」與「超載」
- 覆蓋手段在基類中重新實現的函數(相同的簽名),而
- 超載意味着實施具有相同名稱但具有不同簽名的功能
......並且感到困惑,因爲有時候人們根本不在乎差異。
關於新建/刪除:它們是否被重載或覆蓋?
一個想法:在Class =超載
任何更正/建議/反對
- 實施新/刪除操作? 並隨時標記問題「hairsplitting」...
我一直以爲...新/刪除「覆蓋」與「超載」
......並且感到困惑,因爲有時候人們根本不在乎差異。
關於新建/刪除:它們是否被重載或覆蓋?
一個想法:在Class =超載
任何更正/建議/反對
對於全球operator new
和operator delete
,它實際上既不是重載也不是重寫。程序被允許以替換默認的,實現提供的定義和它自己的定義。 C++標準規定(§3.7.3/ 2):
該庫爲全局分配和釋放函數提供了默認定義。一些全球分配和釋放功能是可替換的(18.4.1)。 C++程序至多應提供一個可替換分配或釋放函數的定義。任何這樣的函數定義都會替換庫中提供的默認版本(17.4.3.4)。
對於一類特定的operator new
或operator delete
,所述運營商正在重載。
因此,重載和重載在這裏同樣是錯誤的,這就解釋了在使用中的50-50分佈:-) – 2010-09-18 18:02:58
James:雖然我認爲你寫的是正確的,但你仍然可以將全局運算符與其他運算符)參數。事實上,std lib至少帶有重載:一個放置new和'nothrow'變體。 – sbi 2010-09-18 20:14:58
@sbi:對。那麼,全球運營商是超負荷的,每個重載可以被取代。 @ spc-mrn:是的,有效。 – 2010-09-18 20:38:57