1、函数指针的声明
函数指针:指向的是函数而非对象。
声明一个指向函数的指针,只需要用指针替代函数名即可,如下:
typedef可以用于定义函数指针类型,之后声明一个函数指针只需要用pf类型名:
typedef bool (*pf)(const string&, const string&);
using pf = bool (*)(const string&, const string&); // 等价上一条
pf pFunc = LengthCompare;
pFunc("a", "bc");
2、函数指针的使用
2.1 定义
当把函数名作为一个值使用,这个函数会自动地转换为指针,以下两种方式等价:
我们可以使用指向函数的指针调用该函数,无需解引用指针:
2.2 调用
2.3 函数指针作为形参
bool LengthCompare(const string& str1, const string& str2)
{
return str1.size() < str2.size();
}
typedef bool(*FuncP)(const string&, const string&);
using FuncP = bool(*)(const string&, const string&); // 与上面等价
void print(const string& a, const string& b, FuncP f1)
{
cout << "函数指针作为形参" << endl;
cout << f1(a, b) << endl;
}
int main()
{
print("a", "ac", LengthCompare); // 实参直接传递函数名称
return 0;
}