多型分為兩種:通用的多型和特定的多型。兩者的區別是前者對工作的型別不加限制,允許對不同型別的值執行相同的**;後者只對有限數量的型別有效,而且對不同型別的值可能要執行不同的**。
通用的多型又分為引數多型(parametric)和包含多型(inclusion);特定的多型分為過載多型(overloading)和強制多型(coercion)。
強制多型:編譯程式通過語義操作,把操作物件的型別強行加以變換,以符合函式或操作符的要求。程式語言中基本型別的大多數操作符,在發生不同型別的資料進行混合運算時,編譯程式一般都會進行強制多型。程式設計師也可以顯示地進行強制多型的操作(casting)。舉個例子,比如,int+double,編譯系統一般會把int轉換為double,然後執行double+double運算,這個int-》double的轉換,就實現了強制多型,即可是隱式的,也可顯式轉換。
過載(overloading)多型:同乙個名(操作符﹑函式名)在不同的上下文中有不同的型別。程式語言中基本型別的大多數操作符都是過載多型的。通俗的**,就是c++中的函式過載。在此處中「overload」譯為「過載」,其實就是所謂的「過載」,也許「overload」就應翻譯為「過載,過載」吧,那「override」就只能是「覆蓋」了。
引數多型:採用引數化模板,通過給出不同的型別引數,使得乙個結構有多種型別。例如,模板類。
包含多型:同樣的操作可用於乙個型別及其子型別。(注意是子型別,不是子類。)包含多型一般需要進行執行時的型別檢查。例如,虛函式「virtual---override」機制。
多型定義 多型實現 多型分類。
1.多型定義 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。簡單的說 就是用基類的引用指向子類的物件。2.如何實現多型 c 中的多型只能通過指向基類型別的指標和引用來呼叫物件的虛函式來實現。實現多型有三種方式 虛方法,抽象方法,介面。虛方法 子類重寫父類中的方法,對父...
C 多型解析
今天我們,來將將c 的三大特性之一的 多型性 為什麼會有這個呢?因為,我們編寫 時,有的時候,當物件不同時,就需要呼叫不同的函式。在這個時候就需要使用的多型了。再說類的多型性之前我先來說說物件這個概念。物件的概念可以分為兩種型別 所謂的靜態型別,就是一般的型別 而動態型別,舉個例子來說就像是賦值相容...
C 多型解析
因為,我們編寫 時,有的時候,當物件不同時,就需要呼叫不同的函式。在這個時候就需要使用的多型了。再說類的多型性之前我先來說說物件這個概念。物件的概念可以分為兩種型別 所謂的靜態型別,就是一般的型別 而動態型別,舉個例子來說就像是賦值相容規則裡說的 乙個基類物件可以用 派生類物件來賦值 在這裡的這個物...