7.3.5 返回函数指针的函数

    和普通指针一样,函数指针也可以作为另一个函数的返回值,如代码7.12所示。

    代码7.12 返回函数指针的函数ReturnFuncPointer


    <————————————-文件名:example712.cpp——————————————-> 01 #include<iostream> 02 typedef int(*hs)(int,int); 03 using namespace std; 04 int Add(int m,int n)//Add函数定义,两数相加 05 { 06 return m+n; 07 } 08 int multiply(int m,int n)//Multiply函数定义,两数相乘 09 { 10 return m*n; 11 } 12 hs lookup(int choice)//函数返回hs型,即指向函数的指针 13 { 14 if(choice==0)//如果参数choice为0,返回加和函数 15 return Add; 16 else//否则,返回乘积函数 17 return multiply; 18 } 19 int main() 20 { 21 int num1,num2,xz,res; 22 cout<<"请输入两个整数以选择要进行的操作:"<<endl; 23 cin>>num1>>num2;//输入两个操作数 24 cout<<"相加请输入0,否则为相乘"<<endl; 25 cin>>xz;//输入要进行的操作 26 hs fun=lookup(xz);//fun函数将根据xz决定取Add还是Multiply 27 res=fun(num1,num2);//调用fun函数 28 cout<<"结果是"<<res<<endl;//输出结果 29 return 0; 30 }

    输出结果如下所示。


    请输入两个整数以选择要进行的操作: 5 8 相加请输入0,否则为相乘 0 结果是13

    【代码解析】代码第12行,lookup函数的返回值是hs型函数指针,查询具体要对用户输入的两个整数进行什么操作,将应调用函数的地址通过hs型指针返回,并赋值给fun。