C plus plus 的多型性

2021-05-22 11:40:19 字數 721 閱讀 1665

多型之目的

以相同的指令呼叫不同的函式

,這種性質稱為

polymorphism

,意思是

」the ability to assume many forms」

(多型)。多型的目的,就是要讓處理「基類之物件」的程式**,能夠完全無障礙地繼承適當處理「派生類之物件」。

前期繫結與後期繫結(靜態繫結與動態繫結)

前期繫結,就是對於

c/c++

的非虛函式(

non-virtual

),在編譯期就轉換為乙個固定的位址呼叫了。後期繫結,就是對

c/c++

的虛函式(包括純虛函式),編譯器無法在編譯期判斷「基類之物件」呼叫的是哪個函式,必須在執行期才能夠判斷。

虛函式後期繫結的實現(虛函式表)

每乙個「內含虛函式的類」,編譯器都會為它做乙個虛函式表,表中的每乙個元素都指向乙個虛函式位址(表中虛函式位址,是根據類中虛函式宣告的先後次序,來進行排列的)。此外,編譯器會為每個類加上乙個成員變數,是乙個指向該虛函式表的指標(常被稱為

vptr

)。派生類會繼承基類的虛函式表(以及所有其它可以繼承的成員),當我們在派生類中改寫虛函式時,虛函式表就受到了影響:表中元素所指的函式位址將不再是基類的函式位址,而是派生類的函式位址。

注:本文總結自《mfc深入淺出》

多型與多型性

1.什麼是多型 多型指的是同一種 類事物的不同形態 2.為何要用多型性 1 增加了程式的靈活性 2 增加了程式的可擴張性 多型性 分為靜態多型性和動態多型性 多型性 在多型的背景下,可以在不用考慮物件具體型別的前提下而直接使用物件 多型性的精髓 統一 3.如何用多型 class animal def...

多型的核心體現(方法的多型性,物件的多型性)

多型的概念 同乙個方法,在不同的情境下會有不同的表現 多型的核心體現主要有以下兩點 1 方法的過載 定義 同乙個方法名可以根據引數列表的不同呼叫不同的方法體 2 方法的覆寫 定義 同乙個父類的方法,可以根據例項化子類的不同也有不同的表現 前提 方法覆寫 1 物件的向上轉型 父類 父類物件 new 子...

this指標多型性

public class dervied extends base private string name dervied protected string id 2 public dervied public void tellname public void printname public s...