8 多型的概念和意義

2021-10-08 21:27:43 字數 1760 閱讀 3812

多型也就是物件導向中期望的行為。

(1) 根據實際的物件型別判斷如何呼叫重寫函式

(2) 父類指標(引用)指向

父類物件則呼叫父類中呼叫的函式

子類物件則呼叫子類中定義的重寫函式

總的來說就是根據實際的物件型別決定函式呼叫的具體目標,同樣的呼叫語句在實際執行時有多種不同的表現形態。

通過關鍵字virtual來對函式進行宣告

(1)被virtual宣告的函式被重寫後具有多型特性

(2)被virtual宣告的函式叫虛函式

(3)要在父類中對函式進行宣告

下面通過乙個例項來理解。

分析:這裡正常情況下會發生同名覆蓋,但是將父類中的函式宣告為虛函式後,就輸出了期望的行為。

在程式執行過程中展現出動態的特性

函式重寫必須實現多型,否則沒有意義

多型是物件導向元件化程式設計的基礎特性

靜態聯編

在程式的編譯期間就能夠確定具體函式的呼叫

如:函式過載

動態聯編

在程式實際執行後才能確定具體的函式呼叫

如:函式重寫

下面通過例項來理解動態聯編和靜態聯編

函式重寫只能發生在父類和子類之間

多型會根據實際物件的型別確定呼叫具體的函式

virtual關鍵字是c++中支援多型的唯一方式

被重寫的虛函式可表現出多型的特性

49 多型的概念和意義

解決函式重寫碰到賦值相容性原則的矛盾 父類中被重寫的函式依然會繼承給子類,子類中重寫的函式將覆蓋父類中的函式,通過作用域分辨符 可以訪問到父類中的函式。child c parent p c c.parent print 從父類中繼承 c.print 在子類中重寫 p print 列印父類中定義 不是...

C 中多型的概念和意義

1 函式重寫回顧 示例 child c parent p c c.parent print 從父類中繼承 i m parent.c.print 在子類中重寫 i m child.p print 父類中定義 i m parent.不是我們期望的版本,因為 p 指向了子類物件,期望呼叫子類版本 2 面相...

繼承的概念和意義

組合關係的特點 將其他類的物件作為當前類的成員使用 當前類的物件與成員物件的生命週期相同 成員物件在用法上與普通物件完全一致 物件導向中的繼承子類之間的父子關係 子類擁有父類的所有屬性和行為 子類就是一種特殊的父類 子類物件可以當做父類物件使用 子類中可以新增父類沒有的方法和屬性 class par...