C++在繼承這一節涉及到函數覆蓋 隱藏 重載等,如何區別它們呢?
首先函數覆蓋的條件:<1>基類函數必須是虛函數
<2>發生覆蓋的兩個函數要分別位於派生類和基類中
<3>函數名稱和參數列表完全相同
其次函數隱藏主要有以下兩種情況:
<1>派生類的函數和基類函數完全相同(函數名和參數列表相同),只是基類的函數沒有使用virtual關鍵字。此時基類的函數將被隱藏,而不是覆蓋。
<2>派生類的函數與基類的函數同名,但參數列表不同,在這種情況下,不管基類的函數聲明是否有virtual關鍵字,基類的函數都被隱藏,注意這種情況與函數重載的區別,重載發生在同一個類中。
最後函數重載的條件:發生在同一個類中,函數名相同,參數類表或類型不同。