用C語言模擬實現c 的繼承與多型特性

2021-07-30 17:16:22 字數 1813 閱讀 8591

一、我們知道,c語言是一種面向過程的程式語言,而c++是一款在它的語法基礎上改進的物件導向的程式語言

(1)面向過程與物件導向的區別:

①從設計方法角度看:

▶面向過程程式設計方法是用函式(即演算法過程)對資料進行操作,但又將函式與其操作的資料分離開來。

▶物件導向程式設計方法是將物件的屬性資料和對屬性資料的操作封裝在一起,作為乙個整體來處理。

②從維護角度看:

▶面向過程程式設計以過程為中心,難於維護。

▶物件導向程式設計以物件的屬性資料為中心,資料相對功能而言,有較強的穩定性,因此更易於維護。

二、繼承與多型的概念

① 繼承:繼承是從已有的類中派生出新的類,新的類能吸收已有類的資料屬性(資料成員)和行為(成員函式),並能擴充套件新的能力,已有類被稱為父類/基類,新增加的類被稱作子類/派生類。

②多型:子類對父類的虛函式進行重寫,並且用父類的指標或引用分別指向或者引用父類的物件和子類的物件,則呼叫其相應的重寫虛函式,從而實現一種介面,多種方法的多型;

三、**實現:

(1)c++繼承和多型

#include 

using

namespace

std;

class a

;class b:public a//b類公有繼承a類

;int main()

執行結果:

(2)c語言實現c++的繼承與多型

#include

using

namespace

std;

//定義乙個函式指標型別;該指標指向乙個函式引數形參為空,返回值為void的函式,這個函式型別名字叫fun;

typedef

void (*fun)();

void afun()//定義乙個函式形參為空,返回值為void的函式

void bfun()//定義乙個函式形參為空,返回值為void的函式

struct a//父類

;struct b//子類

;int main()

執行結果:

四、知識回憶:

①用法一:typedef 函式指標型別的用法:

typedef int (*myfun)(int, int);

這個例子定義了乙個函式指標型別, 該型別叫myfun,定義的函式指標是指向 形參是兩個int , 返回乙個int 的函式;

▶在分析這種形式的定義的時候可以用下面的方法:

先去掉typedef 和別名, 剩下的就是原變數的型別.

去掉typedef和myfun以後就剩:

int (*)(int, int) //函式指標,指向 形參是兩個int , 返回乙個int 的 函式

**②用法二:

typedef給變數型別定義乙個別名.**

▶ typedef structmy_type;

這裡把乙個未命名結構直接取了乙個叫my_type的別名, 這樣如果你想定義結構的例項的時候就可以這樣:

my_type tmp;

▶typedef 原變數型別 別名

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

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

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

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

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

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