C語言模擬C++多型
阿新 • • 發佈:2019-02-17
typedef void(*FUN)();//重定義一個函式指標型別 struct Base { FUN f;//由於C語言中結構體不能包含函式 只能用函式指標在外面實現 }; struct Derive//本派生類只繼承了父類 他自己沒有自己的部分 { Base b;//在子類中定義一個基類的物件即可實現對父類的繼承 }; void FunB() { printf("%s\n","Base::FunB()"); } void FunD() { printf("%s\n","Derive::FunD()"); } void show() { Base b;//定義一個父類的物件 Derive d;//定義一個派生類的物件 b.f = FunB;//父類的物件呼叫父類的同名函式 d.b.f = FunD;//子類的物件呼叫子類的同名函式 Base *pb = &b;//父類的指標指向父類的物件 pb->f();//父類指標呼叫父類的同名函式 pb = (Base*)&d;//父類指標指向子類物件 由於型別不匹配所以要強轉 pb->f();//呼叫子類的同名函式 } int main() { show();//Base::FunB() Derive::FunD() return 0; }