1. 程式人生 > >C++ 多型與虛擬函式

C++ 多型與虛擬函式

多型是指使用相同的函式名來訪問函式不同的實現方法,即“一種介面,多種方法”,用相同的形式訪問一組通用的運算,每個運算可能對應的行為不同。

C++支援編譯時多型和執行時多型,運算子過載和函式過載就是編譯時多型,而派生類和虛擬函式實現執行時多型。

執行時多型的基礎是基類指標,基類指標可以指向任何派生類物件。

2.虛擬函式與過載函式的區別:

    1)過載函式之間必須在引數的型別或者數量上加以區分,而重新定義的虛擬函式在引數的型別和數量上必須與原型相同;

    2)在定義虛擬函式的類中,虛擬函式必須宣告為類的成員而不能是友元,可以被宣告為其他類的友元;解構函式可以是虛擬函式,建構函式不行。

(3)純虛擬函式及其作用:

    純虛擬函式是指在基類中宣告但是沒有定義的虛擬函式:virtual type func(param list) = 0;

    把虛擬函式宣告為純虛擬函式可以強制在派生類中重新定義虛擬函式,否則編譯器會報錯。

(4)抽象類及其特徵

    如果一個類至少有一個純虛擬函式,則稱為抽象類。抽象類只能用來作為其他類的基類,不能定義抽象類的物件,因為在抽象類中有一個或者多個函式沒有定義。但是能夠使用抽象類來宣告指標或者引用。