给定以下两个typedef
s:
typedef void (*pftype)(int);
typedef void ftype(int);
我知道第一个定义pftype
为指向一个函数的指针,该函数接受一个int
参数并且不返回任何内容,第二个定义ftype
为一个接受一个参数并且不返回任何内容的函数类型int
。但是,我不明白第二个可能用于什么。
我可以创建一个匹配这些类型的函数:
void thefunc(int arg)
{
cout << "called with " << arg << endl;
}
然后我可以使用每个创建指向该函数的指针:
int main(int argc, char* argv[])
{
pftype pointer_one = thefunc;
ftype *pointer_two = thefunc;
pointer_one(1);
pointer_two(2);
}
使用函数类型时,我必须指定我正在创建一个指针。使用函数指针类型,我没有。两者都可以互换用作参数类型:
void run_a_thing_1(ftype pf)
{
pf(11);
}
void run_a_thing_2(pftype pf)
{
pf(12);
}
那么,函数类型有什么用呢?函数指针类型是不是覆盖了case,做起来更方便?