天天看點

關于C++多态特性

1 靜态聯編:函數重載。不允許僅傳回值不同。

2 動态聯編:虛函數。

3 基類的指針可以指向派生類,但不能傳遞,指向派生的派生。

4 對于成員函數的調用:對象執行個體變量,調用對象自身的版本。對象指針變量,區分是基類指針還是目前派生類指針,以及是否為虛函數。如果是基類指針,非虛函數,調用指針對象所屬的版本;如果是虛函數,調用實際指向的對象所屬的版本(因為虛函數是通過虛表實作的,虛表的内容是會被覆寫的)。派生類指針則調用派生類版本。

5 多繼承時,走各自的路徑。

6 構造中虛函數依賴編譯器判斷目前類型,可能在派生類執行個體的建構過程中調用基類的版本。

7 抽象類不能執行個體化,也不能作為傳回類型和函數參數,但是可以定義抽象類的指針和引用

8 如果想明确調用特定類的版本,在文法允許的前提下,可以通過指定類名做限制而實作。

繼續閱讀