首页 > 技术文章 > C++函数指针

rixiang 2016-05-07 19:49 原文

 

然后,我在想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 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)\n";
}

也就是访问estimate时就决定了,是接下来是要调用betsy还是pam了,因为函数地址传进去了。妈的C++真简单。妈的真简单。

这里是IDA做的C++反汇编代码,一看就明白了,哈哈哈哈,C++真简单。

 

推荐阅读