然后,我在想C++函数指针到底有啥用呢。想了又想,我想出来一种,就是将函数地址(函数n)作为函数(函数1)的参数时,便可以在访问函数1的时候就决定了,在函数1里面调用的是哪一个函数(函数1,2,3,4……,n-1,n)了。
《C++ Primer Plus》里面的例子:
#include <iostream> double betsy(int); double pam(int); void estimate(int lines,double (*pf)(int)); int main() { using namespace std; int code; cout << "How many lines of code do you need?"; cin >> code; cout <<"Here's Betsy's estimate: "; estimate(code,betsy); cout << "Here's Pam's estimate: "; estimate(code,pam); return 0; } double betsy(int lns) { return 0.05*lns; } double pam(int lns) { return 0.03*lns + 0.0004*lns; } void estimate(int lines,double (*pf)(int)) { using namespace std; cout << lines << "line will take"; cout << (*pf)(lines) << "hour(s) "; }
也就是访问estimate时就决定了,是接下来是要调用betsy还是pam了,因为函数地址传进去了。妈的C++真简单。妈的真简单。
这里是IDA做的C++反汇编代码,一看就明白了,哈哈哈哈,C++真简单。