然后,我在想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:\n";
estimate(code,betsy);
cout << "Here's Pam's estimate:\n";
estimate(code,pam);
return ;
}
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)\n";
}
也就是访问estimate时就决定了,是接下来是要调用betsy还是pam了,因为函数地址传进去了。妈的C++真简单。妈的真简单。
这里是IDA做的C++反汇编代码,一看就明白了,哈哈哈哈,C++真简单。