當前位置:編程學習大全網 - 編程軟體 - 編程時何時使用虛函數,何時使用switch對子類進行區分?

編程時何時使用虛函數,何時使用switch對子類進行區分?

首先,使用虛函數需要有壹個繼承關系。如Dog的父類是Animal,其中A有個virtual void do(),妳可以這樣寫:

Animal* b = new Dog(); //Dog是Animal

這樣,b只能使用Animal中提供的方法,因為編譯器只知道b是個Animal而不是是個Dog

這個時候,如果妳調用 b->do(),那麽,編譯器會獲取b的動態類型,也就是,此時b是當成Dog的,調用的是Dog::do()而不是Animal::do()

回到問題:

如果屬性和方法實現不同,說明它們不應該是屬於繼承的關系。如果以後擴展的可能性小,可以用switch代替多態。

這個看情況而定。如果子類數量有限,且不復雜,可以用switch列出所有的情況。缺點是不利於擴展。多態的缺點是需要構造很多子類,會使得代碼變得復雜,所以這個是看需求來的。

switch不是多態,它只是壹種if判斷語句,多態的行為是由編譯器決定的。

  • 上一篇:讀完高二學編程,能學好嗎,我該這樣學嗎?
  • 下一篇:學cNc編程和電焊哪個好,哪個存前途,工資高些,請知道的說壹下,不知道的就不要亂回答了,謝謝,急
  • copyright 2024編程學習大全網