看我拿傳統的圓與正方形問題為例子,基類是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 多型性與虛函式
物件導向程式設計中的多型性是指向不同的物件傳送同乙個訊息,不同物件對應同一訊息產生不同行為。在程式中訊息就是呼叫函式,不同的行為就是指不同的實現方法,即執行不同的函式體。也可以這樣說就是實現了 乙個介面,多種方法 從實現的角度來講,多型可以分為兩類 編譯時的多型性和執行時的多型性。前者是通過靜態聯編...