1、首先介紹多型的基本概念
1.1虛函式:在函式前面加上virtual關鍵字,變成虛函式,那麼編譯器在編譯的時候就不能確定函式呼叫了
1.2 多型分為兩類
1.3 靜態多型和動態多型的區別:
1.4 使用動態多型需滿足條件
1.5 如何使用動態多型
2.多型的底層實現
父類中寫了乙個虛函式後,內部便有個乙個虛函式指標vfptr,虛函式指標會指向乙個虛函式表vftable,表的內部記錄的是虛函式的位址
當發生繼承時(此處預設為public繼承),子類將繼承父類的所有元素。因此,子類也就繼承了父類中的虛函式指標,此時子類和父類完全相同,子類和父類中的虛函式指標指向的都是父類中虛函式位址。但是當子類重寫了父類中的虛函式後,子類中的虛函式表內部會替換成子類的虛函式位址,父類中的虛函式指標不發生變化。當父類的指標或引用指向子類物件時,將發生多型。因此,當上述函式(即引數為父類指標或引用)的引數指向子類時,將從子類的虛函式表中找到虛函式的位址,此時讀取的是子類中的虛函式。由此形成動態的執行中確定函式位址。
C 多型,虛函式作用及底層實現原理
簡述c 虛函式作用及底層實現原理 c 是物件導向程式設計,其包括3項特點 1 資料抽象 介面和實現分離 2 繼承 父類和子類 3 多型 動態繫結 本文討論多型。當父類希望子類重新定義某些函式時,用virtual關鍵字宣告為虛函式。當我們使用乙個基類型別的引用或者指標,呼叫乙個虛函式時就引發動態繫結 ...
多型 2 多型的實現原理
當類中宣告虛函式時,編譯器會在類中生成乙個虛函式表 虛函式表是乙個儲存類成員函式指標的資料結構 虛函式表是由編譯器自動生成與維護的 virtual成員函式會被編譯器放入虛函式表中 存在虛函式時,每個物件中都有乙個指向虛函式表的指標 vfptr指標 物件在建立的時,由編譯器對vfptr指標進行初始化 ...
多型實現的原理
多型實現的原理從兩個方面說明 1.虛函式表 2.rtti機制 當你在乙個類中使用了virtual關鍵字,那麼就產生了虛函式表,虛函式表中存放的是虛函式的入口位址,父類有父類的虛表,子類有子類的虛表,當繼承時,虛表進行了複製,在子類中重寫了父類的虛函式時,子類虛表中這個函式位址就替換成子類虛函式的位址...