多型的四種實現

2021-08-07 13:36:45 字數 740 閱讀 3941

多型分為兩種:通用的多型和特定的多型。兩者的區別是前者對工作的型別不加限制,允許對不同型別的值執行相同的**;後者只對有限數量的型別有效,而且對不同型別的值可能要執行不同的**。

通用的多型又分為引數多型(parametric)和包含多型(inclusion);特定的多型分為過載多型(overloading)和強制多型(coercion)。

強制多型:編譯程式通過語義操作,把操作物件的型別強行加以變換,以符合函式或操作符的要求。程式語言中基本型別的大多數操作符,在發生不同型別的資料進行混合運算時,編譯程式一般都會進行強制多型。程式設計師也可以顯示地進行強制多型的操作(casting)。舉個例子,比如,int+double,編譯系統一般會把int轉換為double,然後執行double+double運算,這個int-》double的轉換,就實現了強制多型,即可是隱式的,也可顯式轉換。

過載(overloading)多型:同乙個名(操作符﹑函式名)在不同的上下文中有不同的型別。程式語言中基本型別的大多數操作符都是過載多型的。通俗的**,就是c++中的函式過載。在此處中「overload」譯為「過載」,其實就是所謂的「過載」,也許「overload」就應翻譯為「過載,過載」吧,那「override」就只能是「覆蓋」了。

引數多型:採用引數化模板,通過給出不同的型別引數,使得乙個結構有多種型別。例如,模板類。

包含多型:同樣的操作可用於乙個型別及其子型別。(注意是子型別,不是子類。)包含多型一般需要進行執行時的型別檢查。例如,虛函式「virtual---override」機制。

ADT Queue 四種實現

講四種實現 普通陣列模擬佇列實現不講,很輕便也很實用,不難自己隨意寫寫就行 佇列和棧在使用時,即使運算元很多,但一般實時儲存在其中的資料並不多,於是我們採用迴圈佇列的方式來節省空間。那迴圈佇列其實就是,當佇列中申請好的連續空間中已經填滿資料時 並不是指佇列已滿,佇列是只夾在front和rear之間的...

多型的四種表現形式

在之前一提到多型,我下意識就是虛函式重寫構成的執行時多型。直到看了一篇文章,才反應過來多型有四種表現形式。cpp polymorphism 執行時多型就是派生類重寫基類的虛函式,在呼叫函式裡,引數為基類的指標或引用,會構成多型。我之前寫過一篇多型的原理,就是在講多型 執行時多型 在底層是怎麼實現的 ...

實現ORM的四種方案

正如orm名稱所指示的,實現orm的關鍵點在於解決 物件 關係 之間的對映,例如,如何將乙個datarow轉換為乙個entity object,又如何將乙個對某entity object的操作對映到乙個idbcommand,等等。我們以datarabbit為例,public inte ce tent...