C語言模式實現C 繼承和多型

2021-08-04 13:08:59 字數 1373 閱讀 7636

c實現乙個struct a和struct b各包含乙個int成員a和b,要求達到b繼承了a的效果,也就是b裡面包含乙個a。並且能達到多型的效果,也就是乙個a*p指向a調的是a的函式,指向b呼叫的是b的函式。

1. 繼承

(1)c++的繼承

在c++中,可以用乙個類(子類)去繼承另乙個類(父類),子類可以得到父類的相關屬性與方法。

**實現:

(2)c語言模擬繼承

在c語言中,我們可以在新有的結構體裡面定義已有結構體的物件,在新的結構體中通過已有類的物件的訪問已有類自己的成員變數與函式。

**實現:

//繼承

typedef void(*func)();

struct ca //父類

;struct cb //子類

2. 多型

(1)c++中的多型

在c++中,多型是通過virtual函式實現的。在父類中將其宣告為虛函式,並且與子類中的方法的引數列表、返回值以及函式名相同。

//多型

(2)c語言模擬實現多型

利用函式指標實現

C語言模式實現C 繼承和多型

這個問題主要考察的是c和c 的區別,以及c 中繼承和多型的概念。c和c 的區別 c語言是面向過程的語言,而c 是物件導向的過程。什麼是物件導向和面向過程?面向過程就是分析解決問題的步驟,然後用函式把這些步驟一步一步的進行實現,在使用的時候進行一一呼叫就行了,注重的是對於過程的分析。物件導向則是把構成...

C語言實現繼承和多型

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

C語言設計模式繼承和多型特性詳解

最近在學習linux核心的原始碼,linux核心大量使用了類似c 繼承和多型的方式,對裝置進行封裝和功能呼叫,設計模式相當精妙,這裡簡單講解下其大致思路。才疏學淺,第一次寫部落格,如有問題,大家多多指教。我的大致思路是動物作為乙個基類,包含所有動物都具有的功能 linux核心中就是各種ops 如ea...