多型 = 重寫 = 覆蓋
c++中多型是指同乙個操作作用於不同的物件可以有不同的解釋,產生不同的執行結果,多型是通過虛函式實現的,在派生類中重寫基類的虛函式。呼叫方法:宣告基類的指標,利用該指標指向派生類物件,就可以用該指標呼叫派生類中重寫後的虛函式。這樣就可以根據指向的派生類不同,而實現不同的方法。
多型的特點:
在派生類和基類中的函式名相同,有相同的引數,在基類中該函式使用virtual修飾,則是多型。
多型的繫結:
執行時多型性:
編譯時不能確定函式呼叫位址,需要在程式執行時才能確定,則是晚繫結。
編譯時多型性:
編譯時多型性是由函式過載來實現的,在編譯期就可以確定函式的呼叫位址,系統根據傳遞的引數來決定實現何種操作。
過載
在同乙個作用域,重新定義乙個同名函式,該函式具有不同的引數個數或者不同的引數型別。則說新定義的函式過載了原先的函式。
隱藏
隱藏是指派生類的函式遮蔽(隱藏)了與其同名的基類函式。隱藏的理解:在呼叫乙個類成員函式的時候,編譯器會沿著繼承鏈逐級向上查詢函式的定義,如果找到了就停止查詢。如果派生類和基類中都有乙個同名函式,則編譯器會選擇派生類中的函式。這樣子就說派生類中的成員函式隱藏了基類中的成員函式。也就是說它組織了編譯器繼續向上查詢。
隱藏的特點:
1.在派生類和基類中函式名相同,有相同的引數,基類中沒有用virtual修飾,則稱為隱藏
2.在派生類和基類中函式名相同,引數不同,基類中不管有沒有virtual修飾都稱為隱藏。
覆蓋,重寫,過載,隱藏,多型的區別
簡單解析一下oop程式設計中常常讓人困惑的幾個名詞。覆蓋,重寫,過載,隱藏,多型 首先,覆蓋也稱重寫,英文override 特點 1.指不同作用域中 派生類和基類 同名函式的定義 2.函式名 引數均完全相同 3.基類對應方法前有 virtual,即被宣告為虛函式 作用 基類指標和引用在呼叫對應方法時...
覆蓋,重寫,過載,隱藏,多型的區別
簡單解析一下oop程式設計中常常讓人困惑的幾個名詞。覆蓋,重寫,過載,隱藏,多型 首先,覆蓋也稱重寫,英文override 特點 1.指不同作用域中 派生類和基類 同名函式的定義 2.函式名 引數均完全相同 3.基類對應方法前有 virtual,即被宣告為虛函式 作用 基類指標和引用在呼叫對應方法時...
重寫 覆蓋 過載 多型
這篇部落格很亂,關於過載 隱藏 覆蓋的相關知識,看另一篇部落格 參考部落格 其實多型和過載不是乙個層次上的問題,重寫 覆蓋 過載 隱藏常放在一起討論,多型是重寫 覆蓋 下的一種特殊情況,即基類的函式被virtual修飾了。1 多型和過載的區別 多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完...