C 多型的實現方法以及原理

2021-10-01 19:33:57 字數 899 閱讀 2427

#產生多型必備條件發生繼承

繼承物件導向程式設計的全新概念,意思是父類有的public或者protected是的方法或者資料成員,子類public或者protected繼承後可以直接訪問或者使用,private的方法資料成員也會被繼承不過不能直接使用,也就是說子類就包含了父類所有的方法和資料成員,那麼當需要乙個父類物件時,可以用包含它所有成員的子類代替,或是用乙個父類指標去指向子類物件。

#多型當子類繼承並重寫了父類了的同名方法時,子類去呼叫子類父類同名但不同實現的方法時,程式自己無法判定到底是子類自己的方法,還是父類的方法。這時候就要通過virtual關鍵字實現多型,告訴程式到底是執行子類還是父類的方法,我把多型理解為名字相同的函式,內容是不同的狀態,就比如大明的有休閒方式,他的休閒方式是逛街,而小明是大明兒子也有乙個休閒方式,卻是打遊戲。當在成員函式前加上virtual關鍵字的時候,它就成為了乙個虛函式,存放在虛函式表中,子類物件是通過自身包含的虛函式指標來訪問虛函式表中的虛函式。當發生繼承時,子類會先把父類的虛函式表拷貝下來,然後如果對虛函式表裡的虛函式發生重寫,就會把用重寫的函式替換掉父類原本的虛函式,那樣當子類去呼叫和父類同名的方法的就會優先呼叫自己重寫的方法,這就是多型。

在這裡插入**片

//定義乙個father類

class

father;}

;//定義乙個son類

class

son:

public father ;}

;int

main()

//由於father指標指向的是son物件,所以執行的是son類的func1方法

C 多型的實現原理

1.用virtual關鍵字申明的函式叫做虛函式,虛函式肯定是類的成員函式。2.存在虛函式的類都有乙個一維的虛函式表叫做虛表。類的物件有乙個指向虛表開始的虛指標。虛表是和類對應的,虛表指標是和物件對應的。3.多型性是乙個介面多種實現,是物件導向的核心。分為類的多型性和函式的多型性。4.多型用虛函式來實...

C 多型的實現原理

1.用virtual關鍵字申明的函式叫做虛函式,虛函式肯定是類的成員函式。2.存在虛函式的類都有乙個一維的虛函式表叫做虛表。類的物件有乙個指向虛表開始的虛指標。虛表是和類對應的,虛表指標是和物件對應的。3.多型性是乙個介面多種實現,是物件導向的核心。分為類的多型性和函式的多型性。4.多型用虛函式來實...

C 多型的實現原理

純虛函式 virtual void breathe 0 即抽象類!必須在子類實現這個函式 即先有名稱,沒內容,在派生類實現內容 我們先看乙個例子 include class animal 注意,在例1 1的程式中沒有定義虛函式。考慮一下例1 1的程式執行的結果是什麼?答案是輸出 animal bre...