函数指针的应用

函数指针顾名思义就是指向一个函数的指针,下面是一个具体应用的例子

 

#include <iostream>
using namespace std;

int add(int i,int j){return i+j;}
int sub(int i,int j){return i-j;} 

//将来可以加入其他函数


typedef int (*pFunc)(int,int);  //pFunc是函数指针的类型

int DoOperation(pFunc pf, int i, int j) 
{
    return (*pf)(i,j);  //等价于return pf(i,j);  函数名就如同数组名一样,本身就是一个指针 ,特地加上一个解引用来强调这是一个函数指针
}

int main()
{

    cout<<"add1 result:"<<add(1,2)<<endl;    //Okay

    cout<<"add1 result:"<<(*add)(1,2)<<endl;     //Okay, the same as above


    pFunc p1 = add;

    cout<<"add result:"<<p1(1,2)<<endl;        //Okay
    cout<<"add result:"<<(*p1)(1,2)<<endl;    //Okay

    pFunc p2 = sub;
    cout<<"sub result:"<<p2(1,2)<<endl;

    cout<<"add result2:"<<DoOperation(p1,1,2) <<endl;


    system("PAUSE");
    return 0;
}

 

这样设计的好处是,如果将来有新的实现模块,比如要加入乘法,除法,只需要加入新的函数实现即可,而其他程序员仍然只需要调用DoOperation()函数,传入特定的函数指针即可,这样子模块化之间松耦合,比较容易修改扩展。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值