多型性有哪些,怎麼實現

2021-08-21 17:03:19 字數 898 閱讀 7538

c++的多型性:在基類的函式前加上virtual關鍵字,在派生類中重寫該函式,指相同的物件收到不同的訊息或者不同的物件收到相同的訊息時產生的不同的實現動作。如果物件型別是派生類,就呼叫派生類的函式;如果物件型別是基類,就呼叫基類的函式。支援兩種多型:編譯時多型(靜態)、執行時多型(動態)

編譯時多型:就是在編譯期確定的一種多型。在c++中主要體現在函式模板,函式過載和多型無關。

執行時多型性:c++執行時多型性主要是通過虛函式來實現的。體現在具有繼承關係的父類和子類之間,子類重新定義父類的成員函式成為覆蓋或者重寫,而虛函式允許子類重新定義父類的成員函式,即重寫父類的成員函式。如p是父類指標,但是它指向的是子類物件,而且呼叫的又是虛函式,那麼在執行期,就會找到動態繫結到父類指標上的子類物件,然後查詢子類的虛函式表,找到函式f2()的入口位址,從而呼叫子類的f2()函式,這就是執行期多型。(動態的繫結就是指標指向的位址,用c也可以實現動態繫結,就是所謂的多型)

當涉及多型性的時候,採用了虛函式和動態繫結,此時的呼叫就不會在編譯時候確定而是在執行時確定。不在單獨考慮指標/引用的型別而是看指標/引用的物件的型別來判斷函式的呼叫,根據物件中虛指標指向的虛表中的函式的位址來確定呼叫哪個函式

c++純虛函式 :純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法,基類中實現純虛函式的方法是在函式原型後面加「=0」。virtual void f() = 0;

1:存在虛函式的類都有乙個一維的虛函式表叫做虛表,類的物件有乙個指向虛表開始的虛指標。虛表是和類對應的,虛表指標是和物件對應的。  

2:多型性是乙個介面多種實現,是物件導向的核心,分為類的多型性和函式的多型性。  

3:多型用虛函式來實現,結合動態繫結.  

4:抽象類是指包括至少乙個純虛函式的類

多型與多型性

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

this指標多型性

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

多型性定義

多型性就是多種表現形式,具體來說,可以用 乙個對外介面,多個內在實現方法 表示。舉乙個例子,計算機中的堆疊可以儲存各種格式的資料,包括整型,浮點或字元。不管儲存的是何種資料,堆疊的演算法實現是一樣的。針對不同的資料型別,程式設計人員不必手工選擇,只需使用統一介面名,系統可自動選擇。多型性也分靜態多型...