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