計(jì)算機(jī)軟考程序員:C語(yǔ)言的多態(tài)實(shí)現(xiàn)[5]

程序員 責(zé)任編輯:jinruin 2010-11-18

添加老師微信

備考咨詢

加我微信

摘要: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)咯

[1]  [2]  [3]  [4]  [5]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢?cè)诰€老師!