娛樂,C語言模擬C 虛函式多型性

2021-06-09 21:36:10 字數 1085 閱讀 3090

看我拿傳統的圓與正方形問題為例子,基類是shape,每個類定義虛函式showshape(),從而體現多型。

額,懶得寫了,**面前了無秘密。。大概思想就是每個結構體頭都一樣(當作某個基類),這樣可以用結構體頭指標指向任何結構體,虛函式就是在這個結構體頭上做文章,有點繞口了,看**吧,我把注釋寫得很詳細~

[cpp]view plain

copy

print?

#include

//定義2個型別意思一下

enum shapetype ; 

//虛函式表裡的兩個函式,calculate也是意思一下,無意義

typedef

void (*show)(); 

typedef

double (*calculate)(int arg); 

//虛函式表結構體

typedef

struct _virtualfun 

virtualfun,*pvirtualfun; 

//基類,shape

typedef

struct _shape 

shape,*shapepointer; 

//派生類,circle

typedef

struct _circle 

circle; 

//派生類,square

typedef

struct _square 

square; 

//重寫的虛函式

void showcircle() 

//重寫的虛函式

void showsquare() 

//circle初始化

circle circle =; 

//square初始化

square square =; 

//測驗多型,只需要傳遞基類指標shapepointer。

void virtualshow(shapepointer sp) 

void main()   

輸出:i'm circle

i'm square

c 多型性 虛函式

c 中多型性是指通過用virtual關鍵字來繫結同名同引數的函式,實現在編譯中進行後繫結,即在編譯過程中不繫結類,在執行時與具體的物件進行繫結,這樣就可以動態地與實際聯絡 比如乙個類 animal 有乙個虛函式breath 魚類 fish 也有函式breath 狗類 dog 函式breath 具體呼...

c 多型性 虛函式

虛函式與純虛函式的區別 1 擁有虛函式的類可以宣告物件,但擁有純虛函式的類不可以宣告物件 只能宣告乙個指標,並且不能給其分配記憶體 並且將這個類稱為抽象類 特點 1 虛函式是動態繫結的基礎。2 是非靜態的成員函式。在類的宣告中,在函式原型之前寫virtual。不能宣告為靜態函式 3 virtual ...

C 多型性與虛函式

物件導向程式設計中的多型性是指向不同的物件傳送同乙個訊息,不同物件對應同一訊息產生不同行為。在程式中訊息就是呼叫函式,不同的行為就是指不同的實現方法,即執行不同的函式體。也可以這樣說就是實現了 乙個介面,多種方法 從實現的角度來講,多型可以分為兩類 編譯時的多型性和執行時的多型性。前者是通過靜態聯編...