C語言模擬實現C 的多型

2021-08-04 13:04:24 字數 987 閱讀 3653

多型:

維基百科解釋:

指電腦程式

執行時,相同的訊息可能會送給多個不同的類別之物件

,而系統可依據物件所屬類別,引發對應類別的方法,而有不同的行為。

同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。在執行時,可以通過指向基類的指標,來呼叫實現派生類中的方法。

首先,要明白多型的

含義,字面

意思即「多種形態,多種狀態」。分為

動態多型 和

靜態多型兩種;

顧名思義,動態多型既是,在編譯時決定,當程式執行時,根據呼叫關係,決定結果。即在編譯時才決定結果。

靜態多型 ,不是在編譯是時決定。主要是,函式過載,模板,的運用。

過載是根據函式引數的型別,順序,個數的不同(返回值可同可不同)來實現乙個函式名有多種執行結果。模板是根據型別的推演來決定結果(泛型)。

(還有 非引數化多型或譯作

特設多型,引數化多型

之分,有興趣也可以去了解一下)

c++中多型,是通過虛函式(virtual關鍵字修飾的函式)來實現的。

有兩個類,a和b,我們讓b公共繼承a。 此時,我們稱a為父類(基類),稱b為子類(派生類)。

class a

};class b : public a //子類公共繼承父類

};

此時我們分別建立物件,然後分別用父類的指標指向 父類,和用父類的指標指向子類。

int main()

c語言模擬實現:

typedef void(*fun)();  //定義乙個函式指標(返回值為void,引數為空 的函式)

struct a

;struct b

;void funa()

void funb()

int main()

C語言模擬實現C 的繼承與多型

一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...

C語言模擬實現C 的繼承與多型

一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...

C語言模擬實現C 中的繼承和多型

這個問題主要考察的是c和c 的區別,以及c 中繼承和多型的概念。我們都知道c語言是面向過程的一種語言,c 則是物件導向的一類語言,而且c 是在c語言基礎上進行改進的一類語言,所以c 有c所沒有的的三大特性,它們分別是 封裝,繼承和多型,那仫什仫是繼承和多型呢?1 什仫是繼承?繼承是一種復用手段,繼承...