1. 程式人生 > >面試題16——簡述類成員函式的重寫,過載和隱藏的區別

面試題16——簡述類成員函式的重寫,過載和隱藏的區別

重寫與過載主要有以下不同:
(1)範圍的區別:被重寫的和重寫的函式在兩個類中,而過載和被過載的函式在同一個類中;
(2)引數的區別:被重寫函式和重寫函式的引數列表一定相同,而被過載函式和過載函式的引數列表一定不同;
(3)virtual的區別:重寫的基類中被重寫的函式必須要有virtual修飾,而過載函式和被過載函式可以被virtual修飾,也可以沒有

隱藏和重寫,過載有以下不同:
(1)與過載的範圍不同:和重寫一樣,隱藏函式和被隱藏函式不在同一個類中;
(2)引數的區別:隱藏函式和被隱藏的函式的引數列表可以相同也可以不同,但是函式名肯定要相同。當引數不同時,無論基類的引數是否被virtual修飾,基類的函式都是被隱藏,而不是被重寫。

雖然過載和覆蓋都是實現多型的基礎,但是兩者實現的技術完全不相同,達到的目的也是完全不同的。覆蓋是動態繫結的多型,過載是靜態繫結的多型。