2013-03-04 79 views
0

我有幾個問題/關於隱藏的一般問題?隱藏規則 - 參數/返回類型必須相同嗎?

一個基類有一個函數:f()派生類現在宣佈虛擬f值()

發生什麼情況,如果導出函數是常量?這是否隱藏?

如果返回類型不同,怎麼辦?

參數不同?

一個是靜態的,另一個不是?

只是想知道這兩個函數之間的哪些區別導致隱藏/不會導致隱藏。

回答

3

隱藏是關於名稱而不是簽名。

+0

很酷謝謝..... – user997112 2013-03-04 21:25:00

0

第一件事第一件事。

隱藏是指如果在派生類中重寫基類函數,那麼在該派生類中,您定義的原始基類方法將被隱藏。 - 也就是說,如果你需要訪問從基類定義的函數,那麼你就需要有這樣的在你的代碼它不隱藏:

using baseClass::functionName(); 

常量 - 如果你定義一個函數兩次與const另一個沒有const它們是不同的。 Scott Mayers預定有效的C++包含解釋常量和非常量的優秀章節,我建議您閱讀它以獲得透徹的理解。

您不能通過使用不同的返回類型來覆蓋函數,它可能會給編譯時間錯誤指出其含糊不清 - 測試它,以確保。

但是,你可以通過使用不同的參數列表來重載一個函數,那就是如何重載一個函數。

如果你在超載和超載之間感到困惑 - 那麼我建議你也讀一下。簡而言之,重載是指當您在具有不同參數列表的相同作用域中使用兩個函數時,重載是在您使用相同參數列表重新定義派生類中的基類虛函數時使用重寫。

相關問題