#include <iostream> using namespace std; int maxi(int left, int right) { return left >= right ? left : right; } typedef int (*pmaxi)(int, int); int ret_max(int, int, int(int, int)); int ret_max(int, int, int(*)(int, int)); int ret_max(int left, int right, int(*fun)(int, int)) { return fun(left, right); } int (*ret_max_2(void))(int, int) { return maxi; } int main() { int a = 10; int b = 20; pmaxi maxfun = NULL; maxfun = maxi; maxfun = &maxi; cout << maxfun(a, b) << endl; // 隐式调用 cout << (*maxfun)(a, b) << endl; // 显式调用 cout << ret_max(a, b, maxi) << endl; // cout << ret_max_2(a, b) << endl; // error // cout << (*ret_max_2)(a, b) << endl; // error pmaxi maxfun2 = ret_max_2(); cout << maxfun2(a, b) << endl; return 0; }