函数指针指向的是函数而非对象。和其他类型一样,函数指针指向某种特定类型。因为函数的类型由它的返回类型和形参类型共同决定,与函数名无关,所以想要声明一个函数指针,只需要用指针替换函数名即可,例如:
比较字符串长度的函数:bool LengthCompare(const string &, const string &);
此函数的函数指针为: bool (*pf)(const string &, const string &);
pf指向一个函数,函数的参数是两个const string的引用,返回值是bool类型。*pf两端的括号必不可少,如果不写会变成:
bool *pf (const string &, const string &); 此时pf是一个返回值为bool指针的函数。
函数指针的使用:
1、当把函数名作为一个值使用时,该函数自动地转换为指针。
pf = LengthCompare; //pf指向名为LengthCompare的函数
pf = &LengthCompare; //等价的赋值语句,取地址符是可选的
同时,直接使用指向函数的指针调用该函数时,无须提前解引用指针。
bool b1 = pf("hello", "world"); //调用LengthCompare函数
bool b2 = (*pf)("hello", "world");