摘要: 函數(shù)指針提供了一些極其有趣,有效和絕妙的編程技術。你能用它代替switch/if語句來實現(xiàn)你自己的晚綁定(late-binding)或者作為回調(diào)(callback)來使用。不幸的是–可能由于它的語法比較復雜–幾乎所有的電腦書籍和文檔上都講解的不多。即便如此,它們也只是做了相當簡單和膚淺的說明。而對于函數(shù)指針你只需要明白它是什么以及它的語法,因為它和一般的指針比起來從來不用關心內(nèi)存的分配和釋放,所以它被使用的時候是不易產(chǎn)生錯誤的。但你要注意的是: 要時常問自己是否真的需要函數(shù)指針。因為雖然用它來實現(xiàn)晚綁定也很漂亮,但用既存的C++數(shù)據(jù)結構的話會使代碼更可讀和更簡潔。另外,晚綁定的一方面實際上就是運行期(runtime): 如果你調(diào)用了一個虛擬函數(shù),你的程序會根據(jù)一個存儲所有函數(shù)的虛擬表(V-Table)自己來確定到底真正調(diào)用的是哪一個。這就要花費一些時間而用函數(shù)指針代替虛擬函數(shù)的話有可能會節(jié)省一些時間。BTW: 現(xiàn)代的編譯器在這方面都做得非常好!就那我的Borland編譯器來說這個時間就比調(diào)用一次虛擬函數(shù)能節(jié)省2%。
注:晚捆綁(late binding)可能來自c++
閱讀全文