什么是多態(tài)秦效?
簡單地說就是主函數(shù)訪問繼承類Derive的成員函數(shù)時抱究,如果Derive類存在此函數(shù)恢氯,就直接調(diào)用它;而如果Derive類沒有,但是Base類有此函數(shù)勋拟,則間接調(diào)用父類的那個函數(shù)勋磕。
簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針
C也可以實現(xiàn)多態(tài)敢靡。不過這種多態(tài)和C++中的多態(tài)有所不同挂滓,此處不允許同名的成員函數(shù)。但是啸胧,我們?nèi)匀豢梢詫崿F(xiàn)一種模擬的多態(tài)赶站。
#include"Base.h"http://由于用到了多態(tài),這里子類的所有基類的頭文件都要顯式地添加纺念。如果只需要繼承的話是不用這樣的贝椿。
#include"Derive.h"
//動態(tài)繼承描述表宏,帶一個變量用于(內(nèi)聯(lián)地)傳遞對象陷谱。
#defineDERIVE_BASE(DV)(DV.m_base)
int main()
{
Base* bs;
Derive dv;
bs = &dv; //將子類類型的指針賦值給父類類型的指針
dv.m_val = 12;
DERIVE_BASE(dv).m_val = 0XAFff;
Derive_Fun(bs); //模擬通過指向派生類的基類指針訪問派生類成員函數(shù)
Base_Fun(&DERIVE_BASE(dv));//這樣我們可以訪問這個子類所繼承的基類的Fun函數(shù)
Base_Fun(bs);//模擬通過指向派生類的基類指針訪問基類成員函數(shù)
getchar();
return 0;
}
??