重載, 重寫, 覆蓋

重載(overload)

指函數(shù)名相同,但是它的參數(shù)表列個數(shù)或順序,類型不同。但是不能靠返回類型來判斷。
(1)相同的范圍(在同一個作用域中) ;
(2)函數(shù)名字相同;
(3)參數(shù)不同;
(4)底層const可以重載, 頂層不行;
(5)virtual 關鍵字可有可無。
(6)返回值可以不同;

重寫(也稱為覆蓋 override)

是指派生類重新定義基類的虛函數(shù),特征是:
(1)不在同一個作用域(分別位于派生類與基類) ;
(2)函數(shù)名字相同;
(3)參數(shù)相同;
(4)基類函數(shù)必須有 virtual 關鍵字,不能有 static 。
(5)返回值相同(或是協(xié)變),否則報錯;<—-協(xié)變這個概念我也是第一次才知道…
(6)重寫函數(shù)的訪問修飾符可以不同。盡管 virtual 是 private 的,派生類中重寫改寫為 public,protected 也是可以的

重定義(也成隱藏)

(1)不在同一個作用域(分別位于派生類與基類) ;
(2)函數(shù)名字相同;
(3)返回值可以不同;
(4)參數(shù)不同。此時,不論有無 virtual 關鍵字,基類的函數(shù)將被隱藏(注意別與重載以及覆蓋混淆) 。
(5)參數(shù)相同,但是基類函數(shù)沒有 virtual關鍵字。此時,基類的函數(shù)被隱藏(注意別與覆蓋混淆) 。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一.C++中的重寫、重載、重定義 1.重載(overload) 概念 同一個類中的函數(shù)具有相同的名稱,但是參數(shù)的列...
    Geeks_Liu閱讀 6,878評論 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,655評論 1 51
  • 一、重載(overload) 指函數(shù)名相同,但是它的參數(shù)表列個數(shù)或順序,類型不同。但是不能靠返回類型來判斷。 (1...
    Pitfalls閱讀 3,672評論 0 1
  • 1. 結(jié)構(gòu)體和共同體的區(qū)別。 定義: 結(jié)構(gòu)體struct:把不同類型的數(shù)據(jù)組合成一個整體,自定義類型。共同體uni...
    breakfy閱讀 2,265評論 0 22
  • 這一切一切都是我想象,無妨。 嘴角揚微笑朝藏地方向。 大草原華彩飄揚的風馬經(jīng)幡。 羊群潔白,眾生祈禱是明天的旨意。...
    叫我蔡小壯啦閱讀 329評論 2 1

友情鏈接更多精彩內(nèi)容