aihot  2020-11-12 09:24:52  OpenCV |   查看评论   
const string& BigString(const string& s1, const string& s2, bool pf(const string& ,const string&)); const string& BigString(const string& s1, const string& s2, bool (*pf)(const string& ,const string&));

上面定义的函数原型显得有点冗长,我们可以定义函数类型,来简化上面的代码:

// 定义函数类型
typedef bool Func(const string&, const string&); typedef decltype(lengthCompare) Func; // 定义指针类型
typedef bool (*Func)(const string&, const string&); typedef decltype(lengthCompare)* Func;

有了上面的定义,我们就可以简单BigString的定义了:

const string& BigString(const string& ,const string, Func);

6,函数返回值为一个函数指针。

我们知道,函数并不能返回一个函数,但是可以返回一个指向函数的指针。

最简单的方法,我们用类型别名定义一种函数类型:

using F = int(int*,int); // F是一个返回int,接受一个指向int类型的指针和一个int类型,F是一种函数类型
using PF = int(*) (int*, int); // PF是一个函数指针类型

下面我们来定义返回函数指针的函数:

PF f(int); // f是一个函数,它返回一个函数指针
F f(int); // 错误:F是一个函数类型
F* f(int); // OK

当然我们也可以直接定义f:

int (*f(int)) (int*,int);

由内向外观察:首先f有一个形参表(int),所以f是一个函数,然后f的的左边有一个*,说明f返回的是一个指针。进一步发现,指针的类型本身也包含形参表,因此指针指向函数,该函数的返回类型是int。

我们还可以用C++11中的尾置返回类型来声明一个返回函数指针的函数:

auto f(            
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自C++的那些事:函数全解析

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]