摘要:4.進(jìn)階――類結(jié)構(gòu)樹(shù),父類不是純虛類的類前面僅僅講的是父類是純虛結(jié)構(gòu)的情況(面向?qū)ο蠼ㄗh的是所有類的基類都是從純虛類開(kāi)始的),那么當(dāng)類層次比較多的情況下,出現(xiàn)父類不是純虛結(jié)構(gòu)怎么辦呢。嘿嘿,其實(shí)在C中的實(shí)現(xiàn)比C++要簡(jiǎn)單多了。因?yàn)镃中各個(gè)函數(shù)是分散的。在這里使用宏定義是一個(gè)很好的辦法:比如兩個(gè)類Act1,ActByOther
4.進(jìn)階――類結(jié)構(gòu)樹(shù),父類不是純虛類的類
前面僅僅講的是父類是純虛結(jié)構(gòu)的情況 (面向?qū)ο蠼ㄗh的是所有類的基類都是從純虛類開(kāi)始的), 那么當(dāng)類層次比較多的情況下,出現(xiàn)父類不是純虛結(jié)構(gòu)怎么辦呢。嘿嘿,其實(shí)在C中的實(shí)現(xiàn)比C++要簡(jiǎn)單多了。因?yàn)镃中各個(gè)函數(shù)是分散的。
在這里使用宏定義是一個(gè)很好的辦法:比如兩個(gè)類Act1,ActByOther1“繼承”Act1:
MyVirtualInterface* ActByOther1_CreatInterface()
{
index=FindValid()
//對(duì)象池或者使用Malloc
if(index==-1) return NULL;
St[index].Foo1= ActByOther1_Foo1;
// Act1_Foo1要在下面具體實(shí)現(xiàn)
St[index].Foo2= ActByOther1_Foo2;
St[index].Foo3= ActByOther1_Foo3;
Return &st [index];
}
#define ActByOther1_Foo1 Act1_Foo1 //這就是繼承 嘿嘿
ActByOther1_Foo2(){} // 可以修改其實(shí)現(xiàn)
ActByOther1_DoByOther() {} //當(dāng)然就可以添加新的實(shí)現(xiàn)咯
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬(wàn)道題
已有25.02萬(wàn)小伙伴參與做題