多型,顧名思義「 多種狀態」,在物件導向語言中,介面的多種不同實現方式即為多型。 也就是允許將子類型別的指標賦值給父類型別的指標。
classa
};
classb:public
a
};c++中的多型實現方法為 過載、覆蓋、函式模板三種方法。
其中過載是指在同一類中函式過載實現多型, 覆蓋則是帶有虛函式的繼承 。過載的多型也被稱為靜態多型(嚴格意義上來說它並不是多型),覆蓋的多型被稱為動態多型。那麼這其中的 靜 動 也涉及到靜態聯編、動態聯編。
聯編是指乙個電腦程式的不同部分彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。
靜態聯編是指聯編工作在編譯階段完成的,這種聯編過程是在程式執行之前完成的。
靜態聯編對函式的選擇是基於指向物件的指標或者引用的型別。
在函式編譯階段就已經決定了函式的呼叫。
這相當於多型中的過載,對函式的呼叫在編譯階段完成。
動態聯編是指聯編在程式執行時動態地進行,根據當時的情況來確定呼叫哪個同名函式,實際上是在執行時虛函式的實現。
動態聯編中的函式呼叫是在函式執行階段才確定的。這其中就涉及到了多型中的函式覆蓋。
多型,覆蓋,過載,靜態聯編,動態聯編。
c 多型有兩種形式,動態多型和靜態多型。動態多型是指一般的多型,是通過類繼承和虛函式機制實現的多型 靜態多型是通過模板方法來實現,因為這種多型是在編譯時而非執行時,所以稱為靜態多型。動態多型例子 class cshape virtual cshape virtual void draw 0 clas...
C 的多型性以及靜態聯編和動態聯編
首先要介紹一下c 的多型性 多型性可以簡單地概括為 乙個介面,多種方法 程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。多型 polymorphisn 字面意思多種形狀。c 多型性是通過虛函式來實現的,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法稱為覆蓋 overrid...
多型的產生 靜態,動態聯編
需要對應於c 的型別相容性原則 子類物件可以當做父類物件使用 子類物件可以直接賦值發給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 多型 同樣的呼叫語句具有多種不同的表現形態。在c primer 裡描述的是 父類指標既可以指向自己型別的物件,也...