多型的產生 靜態,動態聯編

2021-08-09 13:37:49 字數 705 閱讀 5528

(需要對應於c++的型別相容性原則):

子類物件可以當做父類物件使用

子類物件可以直接賦值發給父類物件

子類物件可以直接初始化父類物件

父類指標可以直接指向子類物件

父類引用可以直接引用子類物件

多型:同樣的呼叫語句具有多種不同的表現形態。

在c++ primer 裡描述的是 父類指標既可以指向自己型別的物件,也可以指向其派生出的物件。則可以使用乙個陣列來表示多種型別的物件。

換種說法就是在不同的時候可以呼叫不同的類的成員函式(如果父類和派生類出現重名函式)前提是定義了虛函式,才會發生多型。

多型的實現,即將基類成員函式定義成虛函式。即在函式宣告前加上 virtual,

若不加 virtual, 則呼叫指標型別或引用型別的成員函式。 如若加了 virtual , 則呼叫指標型別或引用型別所指向的類物件的成員函式。

靜態聯編,連線在編譯階段實現,過載函式使用靜態聯編。

動態聯編,程式連線推遲到程式執行時進行,所有又稱晚期聯編(遲繫結)。 switch 語句 和 if 語句均是動態聯編的例子。例如,對於虛函式,編譯器不知道使用哪種型別的物件,則在執行時才會決定,則是動態聯編,如果不virtual,則是靜態聯編。

多型,覆蓋,過載,靜態聯編,動態聯編。

c 多型有兩種形式,動態多型和靜態多型。動態多型是指一般的多型,是通過類繼承和虛函式機制實現的多型 靜態多型是通過模板方法來實現,因為這種多型是在編譯時而非執行時,所以稱為靜態多型。動態多型例子 class cshape virtual cshape virtual void draw 0 clas...

多型的實現方式以及動態聯編 靜態聯編

多型,顧名思義 多種狀態 在物件導向語言中,介面的多種不同實現方式即為多型。也就是允許將子類型別的指標賦值給父類型別的指標。class a classb public a c 中的多型實現方法為 過載 覆蓋 函式模板三種方法。其中過載是指在同一類中函式過載實現多型,覆蓋則是帶有虛函式的繼承 過載的多...

靜態聯編與動態聯編

在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...