void C實現多型的載體

2021-10-06 02:21:18 字數 743 閱讀 6213

考慮這樣的問題,有一台由多種功能板塊組成的機器,並且這些板塊是可以自由的插拔的,而且每種板塊管理的引數也是不同的。我們用c++這類物件導向的語言可以很容易的實現這樣的功能,因為物件導向的語言支援多型。於是有了這樣的問題:

面對上面的實際問題,c++是這樣實現的:

class

board

class

board1

:public board

就是以這種虛函式的方式實現板卡的動態管理。

c語言本身無法實現虛函式這樣的功能,但是我們還是想實現類似多型的功能怎麼辦?

空指標(void *)就是我們唯一可利用的工具,因為空指標可以指向任何資料型別也可以強制轉化為任何型別,包括malloc這樣的函式返回的也是空指標,所以利用空指標我們這樣解決以上的實際問題:

struct slot

;struct board1

struct board2..

.//卡槽插入板卡

struct board2 *board =

(struct board2*

)malloc

(sizeof

(struct board2));

struct slot slot;

slot.boardtype =2;

slot.board =

(void

*)board;

反正這樣就實現了一種c語言的多型。

多型 2 多型的實現原理

當類中宣告虛函式時,編譯器會在類中生成乙個虛函式表 虛函式表是乙個儲存類成員函式指標的資料結構 虛函式表是由編譯器自動生成與維護的 virtual成員函式會被編譯器放入虛函式表中 存在虛函式時,每個物件中都有乙個指向虛函式表的指標 vfptr指標 物件在建立的時,由編譯器對vfptr指標進行初始化 ...

多型定義 多型實現 多型分類。

1.多型定義 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。簡單的說 就是用基類的引用指向子類的物件。2.如何實現多型 c 中的多型只能通過指向基類型別的指標和引用來呼叫物件的虛函式來實現。實現多型有三種方式 虛方法,抽象方法,介面。虛方法 子類重寫父類中的方法,對父...

php多型的實現

多型性是指相同的操作或函式 過程可作用於多種型別的物件上並獲得不同的結果。不同的物件,收到同一訊息將可以產生不同的結果,這種現象稱為多型性。多型性允許每個物件以適合自身的方式去響應共同的訊息。多型性增強了軟體的靈活性和重用性。在物件導向的軟體開發中,多型性是最為重要的部分之一。物件導向程式設計並不只...