摘要: 函数指针提供了一些极其有趣,有效和绝妙的编程技术。你能用它代替switch/if语句来实现你自己的晚绑定(late-binding)或者作为回调(callback)来使用。不幸的是–可能由于它的语法比较复杂–几乎所有的电脑书籍和文档上都讲解的不多。即便如此,它们也只是做了相当简单和肤浅的说明。而对于函数指针你只需要明白它是什么以及它的语法,因为它和一般的指针比起来从来不用关心内存的分配和释放,所以它被使用的时候是不易产生错误的。但你要注意的是: 要时常问自己是否真的需要函数指针。因为虽然用它来实现晚绑定也很漂亮,但用既存的C++数据结构的话会使代码更可读和更简洁。另外,晚绑定的一方面实际上就是运行期(runtime): 如果你调用了一个虚拟函数,你的程序会根据一个存储所有函数的虚拟表(V-Table)自己来确定到底真正调用的是哪一个。这就要花费一些时间而用函数指针代替虚拟函数的话有可能会节省一些时间。BTW: 现代的编译器在这方面都做得非常好!就那我的Borland编译器来说这个时间就比调用一次虚拟函数能节省2%。
注:晚捆绑(late binding)可能来自c++
阅读全文